System and method for providing enhanced recommendations based on third-party opinions

ABSTRACT

An apparatus includes an interface and a processor. The interface sends and receives data over a network. The processor uses the interface to transmit a first series of profiles to a first user. The first series of profiles corresponds to recommendations of users for a second user. The processor also uses the interface to receive a selection from the first user of a first profile of the first series of profiles. In response to receiving the selection from the first user of the first profile of the first series of profiles, the processor determines, based at least in part on the selection from the first user of the first profile, a second series of profiles. The processor additionally uses the interface to transmit the second series of profiles to the second user.

TECHNICAL FIELD

This invention relates generally to the field of communications and, more particularly, to a system and method for providing enhanced recommendations based on third-party opinions.

BACKGROUND

Networking architectures, developed in communications environments, have grown increasingly complex in recent years. A multitude of protocols and configurations have been developed to accommodate a diverse group of end users having various networking needs. Many of these architectures have gained significant notoriety because they can offer the benefits of automation, convenience, management, and enhanced consumer selections. Using computing platforms with the networking architectures has allowed for increased communication, collaboration, and/or interaction. For example, certain network protocols may be used to allow an end user to connect online with other users who satisfy certain search requirements. These protocols may relate to job searches, person finding services, real estate searches, or online dating.

SUMMARY

This disclosure contemplates a matching tool that is designed to enable both singles and those in relationships to participate in the online-matching process. Users of the matching tool may register as either single, or in a relationship. Users who register as single may participate in the full experience offered by the matching tool, while users who register as in a relationship may participate in the matching process by attempting to generate matches for their single friends and/or by providing suggestions to their single friends. Certain embodiments of the matching tool are described below.

According to one embodiment, an apparatus includes an interface and a hardware processor communicatively coupled to the interface. The interface sends and receives data over a network. The hardware processor uses the interface to transmit a first series of profiles to a first user. The first series of profiles includes recommended profiles for a second user. The processor also uses the interface to receive a selection from the first user of a profile corresponding to a third user. The processor additionally uses the interface to transmit a second series of profiles to the third user. The second series of profiles includes recommended profiles for the third user. The processor further uses the interface to receive a selection from the third user of a profile corresponding to the second user. In response to receiving the selection from the first user of the profile corresponding to the third user and receiving the selection from the third user of the profile corresponding to the second user, the processor enables communication between the second user and the third user.

According to another embodiment, a method includes transmitting a first series of profiles to a first user. The first series of profiles includes recommended profiles for a second user. The method also includes receiving a selection from the first user of a profile corresponding to a third user. The method additionally includes transmitting a second series of profiles to the third user. The second series of profiles includes recommended profiles for the third user. The method further includes receiving a selection from the third user of a profile corresponding to the second user. In response to receiving the selection from the first user of the profile corresponding to the third user and receiving the selection from the third user of the profile corresponding to the second user, the method includes enabling communication between the second user and the third user.

According to another embodiment, at least one computer-readable medium includes a plurality of instructions that, when executed by at least one processor, causes the at least one processor to transmit a first series of profiles to a first user. The first series of profiles include recommended profiles for a second user. When executed by the at least one processor, the plurality of instructions also causes the at least one processor to receive a selection from the first user of a profile corresponding to a third user. When executed by the at least one processor, the plurality of instructions additionally causes the at least one processor to transmit a second series of profiles to the third user. The second series of profiles includes recommended profiles for the third user. When executed by the at least one processor, the plurality of instructions further causes the at least one processor to receive a selection from the third user of a profile corresponding to the second user. When executed by the at least one processor, the plurality of instructions also causes the at least one processor to determine that the second user has authorized the first user to select profiles on behalf of the second user. In response to causing the at least one processor to receive the selection from the first user of the profile corresponding to the third user, receive the selection from the third user of the profile corresponding to the second user, and determine that the second user has authorized the first user to select profiles on behalf of the second user, when executed by the at least one processor, the plurality of instructions additionally cause the processor to enable communication between the second user and the third user.

According to another embodiment, an apparatus includes an interface and a hardware processor communicatively coupled to the interface. The interface sends and receives data over a network. The hardware processor uses the interface to transmit a first series of profiles to a first user. The first series of profiles corresponds to recommendations of users for a second user. The processor also uses the interface to receive a selection from the first user of a first profile of the first series of profiles. In response to receiving the selection from the first user of the first profile of the first series of profiles, the processor determines, based at least in part on the selection from the first user of the first profile, a second series of profiles. The processor additionally uses the interface to transmit the second series of profiles to the second user.

According to yet another embodiment, a method includes transmitting a first series of profiles to a first user. The first series of profiles corresponds to recommendations of users for a second user. The method also includes receiving a selection from the first user of a first profile of the first series of profiles. In response to receiving the selection from the first user of the first profile of the first series of profiles, the method includes determining, based at least in part on the selection from the first user of the first profile, a second series of profiles. The method further includes transmitting the second series of profiles to the second user.

According to a further embodiment, at least one computer-readable medium includes a plurality of instructions that, when executed by at least one processor, causes the at least one processor to transmit a first series of profiles to a first user. The first series of profiles corresponds to recommendations of users for a second user. When executed by the at least one processor, the plurality of instructions also causes the at least one processor to receive a selection from the first user of a first profile of the first series of profiles. In response to causing the at least one processor to receive the selection from the first user of the first profile of the first series of profiles, when executed by the at least one processor, the plurality of instructions additionally causes the at least one processor to determine, based at least in part on a first weight assigned to the first user and the selection from the first user of the first profile, a second series of profiles corresponding to recommendations of users for the second user. When executed by the at least one processor, the plurality of instructions further causes the at least one processor to transmit the second series of profiles to the second user. In response to causing the at least one processor to transmit the second series of profiles to the second user, when executed by the at least one processor, the plurality of instructions also causes the at least one processor to receive a selection from the second user of a profile of the second series of profiles. In response to causing the at least one processor to receive the selection from the second user of the profile of the second series of profiles, when executed by the at least one processor, the plurality of instructions additionally causes the at least one processor to determine, based at least in part on a second weight assigned to the second user and the selection from the second user of the profile of the second series of profiles, a third series of profiles corresponding to recommendations of users for the second user. When executed by the at least one processor, the plurality of instructions further causes the at least on processor to transmit the third series of profiles to the second user.

Certain embodiments provide one or more technical advantages. For example, an embodiment dynamically updates the profiles recommended to a user based on activity of the user as well as activity of the user's friends, acting on behalf of the user. As another example, an embodiment provides enhanced recommendations for a user by considering not only the user's preferences but also the preferences of the user's friends, acting on behalf of the user. In this manner, certain embodiments may decrease the processing and bandwidth resources expended by the system in providing recommendations to a user, prior to the user matching with and forming a successful relationship with another user offline. As a further example, an embodiment enables a user's friend to provide recommendations for the user and/or select profiles on behalf of the user without downloading an application or registering with the matching system, by providing the friend access to the system through a rich media component embedded in a text message. Certain embodiments may include none, some, or all of the above technical advantages. One or more other technical advantages may be readily apparent to one skilled in the art from the figures, descriptions, and claims included herein.

BRIEF DESCRIPTION OF THE DRAWINGS

For a more complete understanding of the present disclosure, reference is now made to the following description, taken in conjunction with the accompanying drawings, in which:

FIG. 1 illustrates an example system;

FIG. 2A illustrates a registration page of a graphical user interface generated by the profile generator of the matching tool of the system of FIG. 1 ;

FIG. 2B illustrates an example of the behavior of the profile generator of the matching tool of the system of FIG. 1 ;

FIGS. 3A through 3C illustrate examples of the behavior of the recommendation engine of the matching tool of the system of FIG. 1 , in response to receiving profile selections from a dater or one of the dater's friends;

FIGS. 4A through 4C illustrate examples of the behavior of the matching engine of the matching tool of the system of FIG. 1 , in response to receiving profile selections from a dater or one of the dater's friends;

FIG. 5 presents an example activity feed generated by the feed generator of the matching tool of the system of FIG. 1 ;

FIG. 6 presents an example of a graphical user interface generated by the chatting engine of the matching tool of the system of FIG. 1 and used by a user of the system to share another user's profile in a group chat;

FIG. 7 presents a flowchart illustrating an example method by which the matching tool of the system of FIG. 1 may generate a match between a pair of daters in the system; and

FIG. 8 presents a flowchart illustrating an example method by which the matching tool of the system of FIG. 1 may generate recommendations of profiles belonging to users who are potentially compatible with a given dater registered with the tool.

DETAILED DESCRIPTION

Embodiments of the present disclosure and its advantages may be understood by referring to FIGS. 1 through 8 of the drawings, like numerals being used for like and corresponding parts of the various drawings.

In a typical online-matching system, profiles that include particular sets of attributes related to participants in the system may be used to facilitate matching. As an example, in the online dating context, the profiles might include attributes such as age, education, and interests. Typical online-matching systems may use such attributes to identify pairs of potentially compatible daters and to recommend such daters to one another. For example, a typical online-matching system might generate recommendations by comparing various attributes from each dater's profile, to compute algorithmic estimates of compatibility scores between pairs of daters. As another example, an online-matching system may generate recommendations of potentially compatible profiles for a dater based on the similarity of the recommended profiles to those profiles previously recommended to the dater and for which the dater has indicated a preference.

While conventional online-matching systems may rely on a number of different algorithms to generate recommendations, a common feature of such systems lies in the fact that the daters themselves are ultimately responsible for selecting matches from among the presented recommendations. For example, a conventional matching system will only match a first dater with a second dater if both the first dater indicates a positive preference for the second dater and the second dater indicates a positive preference for the first dater.

However, in the real world, individuals in long-term relationships frequently participate in the dating lives of their single friends. For example, individuals in relationships often set up their single friends on blind dates, and singles often consult their friends for opinions on dating prospects. Indeed, singles may even attempt to include their non-single friends in conventional online dating experiences, by sharing screen captures of profile pictures they have viewed in a conventional online dating system with their non-single friends, outside of the online-matching system.

Accordingly, this disclosure contemplates a matching tool that adds to the experience provided by conventional online-matching systems by enabling both singles and those in relationships to participate in the online-matching process. Users of the matching tool may register as either single, or in a relationship. Users who register as single may participate in the full experience offered by the matching tool. This includes receiving profile recommendations, selecting profiles to match with, and chatting with matches, among other activities. A single user may also invite other users, such as those registered as in a relationship, to connect with the single user, thereby becoming his/her friends within the tool. The single user may then grant his/her friends various permissions, including, for example, the permission to select profiles on the single user's behalf, the permission to chat with potential matches on the single user's behalf, and/or the permission to edit the single user's profile, among others. In certain embodiments, a user may grant his/her friends friend-specific permissions. For example, the user may assign a first set of permissions to a first friend and a second set of permissions to a second friend, where the second set of permissions may be different from the first set of permissions. In some embodiments, a user may assign his/her friends to a team or group, and then set group-specific permissions for the team/group. For example, the user may assign each of his/her friends to a group and then assign a single set of permissions to every member of the group. A user who registers with the tool as “in a relationship” may connect with multiple single friends and may participate in the online-matching system according to the permissions set by his/her single friends. For example, a user who registers with the tool as “in a relationship” may participate in the online-matching system by attempting to generate matches for his/her single friends and/or providing suggestions of profiles to his/her single friends.

FIG. 1 illustrates an example system 100. As seen in FIG. 1 , system 100 includes matching tool 105, user(s) 110, device(s) 115, network 120, and database 125. As used throughout this disclosure, each user of users 110 a through 110 e may correspond to a user who is acting as a dater, a friend of a dater, or both a dater and a friend of one or more other daters. Accordingly, when discussing actions performed by a given user 110 a, this disclosure refers to the role of user 110 a at the time user 110 a performed each action. For example, this disclosure will refer to user 110 a as dater 110 a when user 110 a is seeking matches for him/herself, communicating with potential matches, and/or performing any other actions associated with a dater. As another example, this disclosure will refer to user 110 a as friend 110 a when user 110 a is performing actions on behalf of a single friend. Such references to specific roles of users 110 are in no way meant to limit the potential roles of users 110. While this disclosure contemplates any number of users 110, acting as daters and/or friends of daters, for simplicity, FIG. 1 illustrates users 110 as including first dater 110 a, first friend 110 b of first dater 110 a, second dater 110 c, first friend 110 d of second dater 110 c, and second friend 110 e of second dater 110 c.

Generally, matching tool 105 generates recommendations for first dater 110 a and second dater 110 c, consisting of profiles 130 of other, potentially compatible daters, and transmits such recommendations to the daters and their registered friends, for selection therefrom. In this manner matching tool 105 enables both daters 110 a and 110 c as well as friends 110 b, 110 d, and 110 e to participate in the online dating process for daters 110 a and 110 c.

As an example, consider dater 110 a. Matching tool 105 generates recommendations of other, potentially compatible daters, and presents a series of profiles 130 belonging to the potentially compatible daters to dater 110 a and/or friend 110 b of dater 110 a for selection therefrom. For example, in certain embodiments, friend 110 b may receive a series of recommendations for first dater 110 a that includes profile 130 c belonging to second dater 110 c. In response to viewing profile 130 c, friend 110 b may believe that second dater 110 c is likely compatible with first dater 110 a (e.g., friend 110 b may believe that the potential exists for first dater 110 a and second dater 110 c to enter into a successful dating relationship offline). Accordingly, friend 110 b may select profile 130 c, belonging to second dater 110 c, in the hopes of generating a match in the system between first dater 110 a and second dater 110 c. If second dater 110 c, friend 110 d of second dater 110 c, and/or friend 110 e of second dater 110 c similarly selects profile 130 a, belonging to first dater 110 a, as a potential match for second dater 110 c, matching tool 105 will generate a match between first dater 110 a and second dater 110 c, enabling communication between the two daters. In this manner, matching tool 105 enables both dater 110 a and friend 110 b of dater 110 a to participate in the matching process for dater 110 a.

As another example, in certain embodiments, rather than being able to generate matches for first dater 110 a, friend 110 b of first dater 110 a may be able to suggest profiles to first dater 110 a that friend 110 b thinks first dater 110 a should attempt to match with. For example, in response to receiving a series of recommendations for first dater 110 a that includes profile 130 c, belonging to second dater 110 c, friend 110 b may select profile 130 c, thereby generating an indication to first dater 110 a that friend 110 b thinks that first dater 110 a should select profile 130 c (e.g., friend 110 b thinks that first dater 110 a and second dater 110 c are likely compatible). In certain embodiments, the indication to first dater 110 a that friend 110 b thinks that first dater 110 a should select profile 130 c may correspond to matching tool 105 reordering the series of recommendations presented to first dater 110 a, such that profile 130 c is located earlier in the series of recommendations than if friend 110 b had not selected profile 130. For example, matching tool 105 may reorder the series of recommendations such that profile 130 c is the first profile presented to dater 110 a. In some embodiments, the indication to first dater 110 a that friend 110 b thinks that first dater 110 a should select profile 130 c may correspond to an indication placed on profile 130 c, as presented to first dater 110 a. For example, profile 130 c, as presented to first dater 110 a, may include an icon or a statement such as “friend 110 b thinks that you and dater 110 c would be a great match,” or any similar phrase indicating that friend 110 b has suggested profile 130 c to first dater 110 a. The manner by which matching tool 105 generates recommendations for users 110 and matches users 110 with one another is described in further detail below, in the discussion of FIGS. 3 and 4 .

Devices 115 may be used by users 110 to receive incoming messages 185 and to send outgoing messages 190. While illustrated in FIG. 1 as incoming messages 185 passing directly from matching tool 105 to devices 115 and outgoing messages 190 passing directly from devices 115 to matching tool 105, this disclosure contemplates that the exchange of messages 185 and 190 between matching tool 105 and devices 115 is facilitated by network 120. For example, matching tool 105 may transmit incoming messages 185 to devices 115 over network 120. Similarly, devices 115 may transmit outgoing messages 190 to matching tool 105 over network 120.

This disclosure contemplates that incoming messages 185 may include any messages received by devices 115. Similarly, outgoing messages 190 may include any messages transmitted by devices 115. As an example, incoming message 185 may include a series of profiles 130, recommended for dater 110 a and received by device 115 a of dater 110 a and/or device 115 b of friend 110 b of dater 110 a. In this example, outgoing message 190 may then include one or more selections of profiles 130, transmitted by device 115 a of dater 110 a and/or device 115 b of friend 110 b of dater 110 a, and selected from the series of profiles 130 recommended for dater 110 a. This form of incoming message 185 and outgoing message 190 is described in further detail below, in the discussion of FIGS. 3 and 4 .

As another example, incoming messages 185 may include requests for information from users 110, used by matching tool 105 to generate profiles 130. Outgoing messages 190 may then include the information submitted by users 110, in response to requests 185. For example, incoming messages 185 may include requests for users' names, genders, ages, birthdates, and/or any other personal information, and outgoing messages 190 may include responses, containing such personal information. The manner by which matching tool 105 generates requests 185 for personal information and creates user profiles 130 using responses 190 is described in further detail below, in the discussion of FIGS. 2A and 2B.

As another example, incoming messages 185 and outgoing messages 190 may include messages originating from a first user 110 a or 110 b and destined for a second user 110 c, 110 d, and/or 110 e (or vice versa), where matching tool 105 is used to facilitate communication between first user 110 a or 110 b and second user 110 c, 110 d, and/or 110 e. For example, first user 110 a may transmit message 190 to matching tool 105, for ultimate receipt by second user 110 c. Matching tool 105 may then transmit the contents of message 190 to second user 110 c, as message 185. In a similar manner, messages 190 may include messages originating from first dater 110 a and destined for friend 110 b (or vice versa). For example, incoming messages 185 and outgoing messages 190 may include portions of a chat session between any combination of first dater 110 a, first friend 110 b of first dater 110 a, second dater 110 c, first friend 110 d of second dater 110 c, and second friend 110 e of second dater 110 c, as described in further detail below, in the discussion of FIG. 6 .

As a further example, incoming messages 185 may include information relating to the activities of first dater 110 a and/or first dater's friend 110 b, with respect to matching tool 105. For example, incoming message 185 may include an activity feed, as described in further detail below, in the discussion of FIG. 5 .

Devices 115 include any appropriate device for communicating with components of system 100 over network 120. For example, device 115 may be or may be accompanied by a telephone, a mobile phone, a computer, a laptop, a tablet, a server, an automated assistant, and/or a virtual reality or augmented reality headset or sensor, or other device. This disclosure contemplates device 115 being any appropriate device for sending and receiving communications over network 120. For example, devices 115 may include any appropriate devices for receiving incoming messages 185 and transmitting outgoing messages 190. As an example, and not by way of limitation, device 115 may be a computer, a laptop, a wireless or cellular telephone, an electronic notebook, a personal digital assistant, a tablet, or any other device capable of receiving, processing, storing, and/or communicating information with other components of system 100. Device 115 may also include a user interface, such as a display, a microphone, keypad, or other appropriate terminal equipment usable by user 110. In some embodiments, an application executed by device 115 may perform the functions described herein. In certain embodiments, devices 115 may communicate with matching tool 105 through network 120 via a web interface.

Network 120 facilitates communication between and amongst the various components of system 100. This disclosure contemplates network 120 being any suitable network operable to facilitate communication between the components of system 100. Network 120 may include any interconnecting system capable of transmitting audio, video, signals, data, messages, or any combination of the preceding. Network 120 may include all or a portion of a public switched telephone network (PSTN), a public or private data network, a local area network (LAN), a metropolitan area network (MAN), a wide area network (WAN), a local, regional, or global communication or computer network, such as the Internet, a wireline or wireless network, an enterprise intranet, or any other suitable communication link, including combinations thereof, operable to facilitate communication between the components.

Database 125 may store a set of user profiles 130. Database may contain any number of user profiles 130 a, 130 b, 130 c, through 130 n. User profiles 130 define or represent features of users 110. Profiles 130 may be available to the general public, to those who are members of the online dating system, and/or to a specific category of those members of the online dating system. Profiles 130 may contain information that was solicited from users 110 when users 110 set up their online dating accounts or was otherwise input by such users into their profiles, as described in further detail below, in the discussion of FIG. 2B. Profiles 130 may include general information such as age, height, gender, and occupation, as well as detailed information that may include the users' interests, likes/dislikes, personal feelings, and/or outlooks on the world. This disclosure contemplates that in certain embodiments, profiles 130 a and 130 c, assigned to daters 110 a and 110 c, respectively, may include more detailed information than profiles 130 b, 130 d, and 130 e, assigned to friends 110 b, 110 d, and 110 e of daters 110 a and 110 c. Profiles 130 a and 130 c may include more detailed information than profiles 130 b, 130 d, and 130 e, because the information contained in profiles 130 a and 130 c may be used by matching tool 105 to facilitate matching between daters 110 a and 110 c. The information contained in profiles 130 b, 130 d, and 130 e may also be used by daters 110 a and 110 c to locate and identify their friends in the online dating system.

As seen in FIG. 1 , matching tool 105 includes processor 135, memory 140, and interface 142. This disclosure contemplates processor 135, memory 140, and interface 142 being configured to perform any of the functions of matching tool 105 described herein. Generally, matching tool 105 implements profile generator 160, recommendation engine 165, matching engine 170, feed generator 175, and chatting engine 180. Profile generator 160 is used to generate user profiles 130, stored in database 125, as described in further detail below, in the discussion of FIG. 2 . Recommendation engine 165 is used to generate recommendations for a given dater 110 a of other, potentially compatible daters 110 c, as described in further detail below, in the discussion of FIG. 3 . Matching engine 170 is used to receive feedback from users 110 of the recommendations for daters 110 a and 110 c, provided by recommendation engine 165 to users 110, and to match daters 110 a and 110 c based on this feedback, as described in further detail below, in the discussion of FIG. 4 . Feed generator 175 is used to generate activity feeds, based on the activities of users 110 with respect to matching tool 105, as described in further detail below, in the discussion of FIG. 5 .

Chatting engine 180 is used to facilitate communication between users 110 of matching tool 105. This disclosure contemplates that chatting engine 180 may be configured to facilitate any suitable type of communication amongst users 110. As an example, chatting engine 180 may be configured to facilitate communication between first dater 110 a and second dater 110 c in response to matching engine 170 generating match 425 between first dater 110 a and second dater 110 c. For example, chatting engine 180 may be configured to receive message 190 transmitted by dater 110 a, for ultimate receipt by dater 110 c. In response to receiving message 190, chatting engine 180 may be configured to transmit the contents of message 190 to dater 110 c, as message 185. In certain embodiments in which second dater 110 c has granted friend 110 d permission to chat with second dater 110 c's matches on his/her behalf, chatting engine 180 may be configured to facilitate communication between first dater 110 a and friend 110 d of second dater 110 c, in response to matching engine 170 generating match 425 between first dater 110 a and second dater 110 c. In some embodiments, first dater 110 a may be aware that he/she is chatting with friend 110 d of second dater 110 c, rather than second dater 110 c. In certain embodiments, first dater 110 a may not be aware that he/she is chatting with friend 110 d of second dater 110 c, rather than second dater 110 c.

As another example, chatting engine 180 may be configured to facilitate communication between first dater 110 a, second dater 110 c, and first friend 110 b who selected profile 130 c, belonging to second dater 110 c, on behalf of first dater 110 a. For example, first friend 110 b may use chatting engine 180 to make an introduction between first dater 110 a and second dater 110 c. Here, chatting engine 180 may be configured to receive message 190, transmitted by friend 110 b, for ultimate receipt by both daters 110 a and 110 c. In response to receiving message 190, chatting engine 180 may be configured to transmit the contents of message 190 to both first dater 110 a and second dater 110 c as message 185. As a specific example, first friend 110 b may use chatting engine 180 in this manner to present first dater 110 a and second dater 110 b with an icebreaker question. In certain embodiments, friend 110 b of first dater 110 a may only be permitted to communicate with second dater 110 c if first dater 110 a has set permissions 150 b, belonging to friend 110 b, to allow for such communication.

As another example, chatting engine 180 may be configured to facilitate communication between dater 110 a and his/her friends 110 or a subset of his/her friends 110. For example, in certain embodiments, chatting engine 180 may be configured to generate a group chat amongst the members of a team or group of friends 110 created by dater 110 a. This group chat may be accessible to the members of dater 110 a's team/group through a graphical user interface which may be generated by chatting engine 180 and displayed on devices 115 belonging to the members of dater 110 a's team/group. In certain embodiments, chatting engine 180 may also be configured to facilitate communication between a subset of the members of a team/group belonging to dater 110 a. For example, team/group members 110 b, 110 f, and 110 g may generate a chatting session amongst one another to discuss a profile 130 that one or more of the team/group members is considering sharing with dater 110 a, prior to sharing profile 130 with dater 110 a.

As another example, in certain embodiments, in response to dater 110 a inviting friend 110 b to connect with dater 110 a within matching tool 105 (e.g., inviting friend 110 b to join dater 110 a's friend list), dater 110 a may add friend 110 b to a group chat. This disclosure contemplates that dater 110 a may create any number of group chats and assign his/her friends to such group chats in any manner. For example, dater 110 a may create a first group chat for his/her college friends, a second group chat for his/her work friends, and a third group chat for his/her closest friends, where the membership of the third group chat may overlap with the membership of the first and/or second group chats. In certain embodiments, members of a group chat may share profiles 130 with one another using the group chat. This aspect of chatting engine 180 is described in further detail below, in the discussion of FIG. 6 .

In certain embodiments, chatting engine 180 may additionally be configured to facilitate communication between groups of users 110 with common interests. Such groups may be self-generated by users 110, or moderated groups generated by system administrators. As an example, a user 110 may generate group for dachshund lovers, which any other users may join. The formation of such groups may be desirable as they may provide an additional avenue for daters 110 a and friends 110 b of daters 110 a to discover potential matches for daters 110 a.

Chatting engine 180 may be a software module stored in memory 140 and executed by processor 135. An example algorithm for chatting engine 180 is as follows: (1) receive message 190 transmitted by user 110 a and destined for user 110 d; (2) determine that user 110 a is permitted to communicate with user 110 d (e.g., user 110 a is a member of a team or group created by user 110 d (or vice versa), user 110 a and user 110 d have been matched by matching tool 105, user 110 d is a member of a team or group belonging to user 110 c with whom user 110 a has matched (or vice versa), and/or user 110 a and user 110 d are members of a group chat based on a common interest); (3) transmit the contents of message 190 in message 185 to user 110 d. While the above example presents one possible algorithm for chatting engine 180, this disclosure contemplates that chatting engine 180 may use any algorithm operable to facilitate communication between users 110. For example, the algorithm used by chatting engine 180 may include modifications, additions, or omissions to the example algorithm presented above. Furthermore, the algorithm used by chatting engine 180 may include more, fewer, or other steps as compared with the example algorithm presented above, and the steps may be performed in parallel or in any suitable order.

Processor 135 may be any electronic circuitry, including, but not limited to microprocessors, application specific integrated circuits (ASIC), application specific instruction set processor (ASIP), and/or state machines, that communicatively couples to memory 140 and interface 142 and controls the operation of matching tool 105. Processor 135 may be 8-bit, 16-bit, 32-bit, 64-bit or of any other suitable architecture. Processor 135 may include an arithmetic logic unit (ALU) for performing arithmetic and logic operations, processor registers that supply operands to the ALU and store the results of ALU operations, and a control unit that fetches instructions from memory and executes them by directing the coordinated operations of the ALU, registers and other components. Processor 135 may include other hardware and software that operates to control and process information. Processor 135 executes software stored on memory 140 to perform any of the functions described herein. Processor 135 controls the operation and administration of matching tool 105 by processing information received from network 120, device(s) 115, interface 142, and memory 140. Processor 135 may be a programmable logic device, a microcontroller, a microprocessor, any suitable processing device, or any suitable combination of the preceding. Processor 135 is not limited to a single processing device and may encompass multiple processing devices.

Memory 140 may store, either permanently or temporarily, data, operational software, or other information for processor 135. Memory 140 may include any one or a combination of volatile or non-volatile local or remote devices suitable for storing information. For example, memory 140 may include random access memory (RAM), read only memory (ROM), magnetic storage devices, optical storage devices, or any other suitable information storage device or a combination of these devices. The software represents any suitable set of instructions, logic, or code embodied in a computer-readable storage medium. For example, the software may be embodied in memory 140, a disk, a CD, or a flash drive. In particular embodiments, the software may include an application executable by processor 135 to perform one or more of the functions described herein.

In certain embodiments, memory 140 may also store recommendation algorithm 145, a set of friend permissions 150, and/or a set of algorithm weights 155. Recommendation algorithm 145 is an algorithm configured to generate, for a given dater 110 a, recommendations of profiles 130 belonging to other daters 110 c, who may potentially be compatible with dater 110 a. This disclosure contemplates that recommendation algorithm 145 may determine potential compatibility in any suitable manner. As an example, recommendation algorithm 145 may determine that first dater 110 a and second dater 110 c are potentially compatible based on similarities between profile 130 a, belonging to first dater 110 a, and profile 130 c, belonging to second dater 110 c. As another example, recommendation algorithm 145 may determine that first dater 110 a and second dater 110 c are potentially compatible based on previous profile preferences expressed by first dater 110 a and/or second dater 110 c. As a further example, recommendation algorithm 145 may determine that first dater 110 a and second dater 110 c are potentially compatible by computing attractiveness scores for each of first dater 110 a and second dater 110 c and determining that first dater 110 a and second dater 110 c have similar attractiveness scores, under the assumption that people are more likely to match with people of similar attractiveness. Additional details and examples of recommendation algorithm 145 are presented in further detail below, in the discussion of FIG. 3 .

The set of algorithm weights 155 may include one or more weights assigned to each of users 110 a through 110 e. For example, first weight 155 a may be assigned to first dater 110 a, second weight 155 b may be assigned to first friend 110 b of first dater 110 a, third weight 155 c may be assigned to second dater 110 c, fourth weight 155 d may be assigned to first friend 110 d of second dater 110 c, and fifth weight 155 e may be assigned to second friend 110 e of second dater 110 c. Each weight 155 a through 155 d may indicate the relative importance that matching algorithm 145 should place on previous profile preferences expressed by users 110. As an example, a value for first weight 155 a of 1.0 and a value for second weight 155 b of 0.5 may indicate that matching algorithm 145 should place twice as much importance on a previous profile preference received from first dater 110 a, and indicating that first dater 110 a would like to match with a dater 110 associated with profile 130 f, as compared to a previous profile preference received from friend 110 b of first dater 110 a, and indicating that friend 110 b would like first dater 110 a to match with a dater 110 associated with profile 130 i, when determining future profile recommendations for first dater 110 a. As another example, a value for fourth weight 155 d of 0.8 and a value for fifth weight 155 e of 0.4 may indicate that matching algorithm 145 should place greater importance on previous profile preferences received from first friend 110 d of second dater 110 c than on previous profile preferences received from second friend 110 e of second dater 110 c, when determining future profile recommendations for second dater 110 c. The use of weights 155 is described in further detail below, in the discussion of FIG. 3 .

Friend permissions 150 may include permissions granted by daters 110 to their friends, which indicate the permissible actions that the friends may take when acting on behalf of daters 110. For example, first dater 110 a may grant friend 110 b permissions 150 b, indicating that friend 110 b may attempt to match with other users on behalf of dater 110 a and to communicate with other daters 110 c on behalf of first dater 110 a. This disclosure contemplates that friend permissions 150 may include any suitable permissions that a dater 110 a may grant to his/her friends. For example, permissions 150 may include permissions to select profiles 130 in an attempt to match dater 110 a with other daters; suggest profiles 130 to dater 110 a; edit profile 130 a, assigned to dater 110 a; suggest edits to profile 130 a, assigned to dater 110 a; communicate with matches generated for dater 110 a on behalf of dater 110 a; communicate with matches generated for dater 110 a as a friend of dater 110 a; view the behavior of dater 110 a while interacting with matching tool 105; and/or any other appropriate permissions that dater 110 a may grant to his/her friends. The use of friend permissions 150 is described in further detail below, in the discussion of FIGS. 2 through 5 .

Interface 142 represents any suitable device operable to receive information from network 120, transmit information through network 120, perform suitable processing of the information, communicate to other devices, or any combination of the preceding. For example, interface 142 transmits messages 185 to devices 115 and receives messages 190 from devices 115. As another example, interface 142 may facilitate the exchange of messages between users 110, for example, by receiving a message transmitted by user 110 a for ultimate receipt by user 110 c and then transmitting the message to user 110 c. Interface 142 represents any port or connection, real or virtual, including any suitable hardware and/or software, including protocol conversion and data processing capabilities, to communicate through a LAN, WAN, or other communication systems that allows matching tool 105 to exchange information with devices 115 and/or other components of system 100 via network 120.

Modifications, additions, or omissions may be made to the systems described herein without departing from the scope of the invention. For example, system 100 may include any number of users 110, devices 115, networks 120, and databases 125. The components may be integrated or separated. Moreover, the operations described above may be performed by more, fewer, or other components. Additionally, the operations may be performed using any suitable logic comprising software, hardware, and/or other logic. As used in this document, “each” refers to each member of a set or each member of a subset of a set.

FIGS. 2A and 2B illustrate the process by which matching tool 105 registers users 110 and generates profiles 130 for users 110. In certain embodiments, users 110 (including both daters and friends of daters) register with matching tool 105 prior receiving recommendations from the tool. The registration process may involve submitting information to matching tool 105, which is then used by the tool to generate profiles 130 for the users.

FIG. 2A illustrates an example graphical user interface 205, displayed on a device 115 of user 110, and used by user 110 to begin the process of registering with matching tool 105. Matching tool 105 may present user 110 with graphical user interface 205 in response to several different scenarios. As an example, a user 110, interested in participating in the online dating experience, may access the Internet via device 115 and travel to a website managed by matching tool 105. The website may then present graphical user interface 205 to user 110. As another example, a user 110 may download an application to device 115, through which user 110 may interact with matching tool 105. In response to accessing the application for the first time, the application may present graphical user interface 205 to user 110.

As another example, matching tool 105 may transmit a message 185 to an existing user (e.g., 110 a), requesting that user 110 a invite his/her friends to participate in the online dating experience. For example, matching tool 105 may first transmit a message 185 to user 110 a requesting that user 110 a provide matching tool 105 with access to the contacts stored on device 115 of user 110 a. If user 110 a transmits a response 190 to matching tool 105 granting matching tool 105 permission to access the contacts stored on device 115, matching tool 105 may then transmit a list of contacts to device 115, from which user 110 a may choose to invite one or more of the listed contacts to participate in the online dating experience. For example, in response to receiving the list of contacts, user 110 a may indicate to matching tool 105 that he/she wishes to invite a first contact (e.g., 110 b) to register with matching tool 105. In certain embodiments, in response to receiving an indication from user 110 a indicating that he/she wishes to invite first contact 110 b to register with matching tool 105, matching tool 105 may automatically generate and transmit to first contact 110 b sign-up request 250, in the form of an SMS and/or email message that includes a link through which first contact 110 b may access graphical user interface 205, to begin the registration process. In some embodiments, rather than automatically transmitting an SMS and/or email message, matching tool 105 may access an SMS and/or email application on device 115 of user 110 a and pre-populate an SMS and/or email message to first contact 110 b, with a link through which first contact 110 b may access graphical user interface 205. User 110 a may then choose to transmit the pre-populated SMS and/or email message to first contact 110 b.

In certain embodiments, in addition to or instead of requesting access to the contacts stored on device 115 of user 110 a, matching tool 105 may request access to one or more applications installed on device 115, through which user 110 a may communicate with other individuals. For example, matching tool 105 may request access to one or more applications such as WECHAT, WHATSAPP, LINE, FACEBOOK, INSTAGRAM, LINKEDIN, or any other application through which user 110 a may communicate with other individuals. If user 110 a grants matching tool 105 access to any of these communication applications, matching tool 105 may access user 110 a's friend lists, stored in the application(s), and generate invites, as described above, for one or more individuals stored in the friend lists. These invites may then be communicated through the application(s) to the individuals.

As illustrated in FIG. 2A, in certain embodiments, prior to receiving recommendations from matching tool 105, matching tool 105 may request that users 110 self-identify as either single or in a relationship. For example, graphical user interface 205 may include a pair of interactive buttons 210 and 215, through which user 110 may specify whether he/she is single or is in a relationship. User 110 may select button 210 to indicate that he/she is single, or user 110 may select button 215 to indicate that he/she is in a relationship.

If user 110 a registers as “single,” matching tool 105 treats user 110 a as an active dater and may provide user 110 a with access to the full set of features offered by the online dating experience created by matching tool 105. For example, dater 110 a may receive profile recommendations, select profiles to match with, and chat with matches, among other activities. Dater 110 a may also perform any of these functions on behalf of his/her single friends, provided these single friends have granted dater 110 a permission to do so. Additionally, profile 130 a, belonging to dater 110 a, may be viewable and selectable by other users 110.

If user 110 b registers as “in a relationship,” matching tool 105 may limit the activities that user 110 b may perform while interacting with the tool to only those activities that may be performed by a friend of a dater. For example, in certain embodiments, friend 110 b may not receive any profile recommendations for him/herself, or match him/herself with any other users 110 (e.g., profile 130 b, belonging to friend 110 b, may not be selectable by other users 110 seeking to generate matches for daters 110 a and 110 c). Instead, friend 110 b may act on behalf of daters 110 a who have granted permissions 150 b to friend 110 b to do so. For example, dater 110 a may grant friend 110 b permissions 150 b that include the permission to: (1) select profiles 130 in an attempt to match other users 110 with dater 110 a; (2) suggest profiles 130 to dater 110 a; (3) edit profile 130 a, assigned to dater 110 a; (4) suggest edits of profile 130 a to dater 110 a; (5) communicate with matches generated for dater 110 a on behalf of dater 110 a; (6) communicate with matches generated for dater 110 a as friend 110 b of dater 110 a; (7) view the behavior of dater 110 a while interacting with matching tool 105 a; and/or (8) any other appropriate permissions that dater 110 a may grant to friend 110 b.

This disclosure contemplates that a single user 110 c may grant friend 110 d permission to act on his/her behalf in any suitable manner. As an example, in certain embodiments, in response to inviting friend 110 d to participate in the online dating experience generated by matching tool 105 (e.g., inviting friend 110 d to connect through matching tool 105 and to be listed as one of user 110 c's friends), single user 110 c may grant friend 110 d permissions 150 d to act on his/her behalf. This disclosure contemplates that permissions 150 may be friend-specific. For example, dater 110 c may grant first friend 110 d permissions 150 d, which may include the permission to select profiles 130 in an attempt to match other users 110 with dater 110 c, while dater 110 c may grant second friend 110 e permissions 150 e, which may include the permission to suggest profiles 130 to dater 110 c, but not to select profiles 130 in an attempt to match other users 110 with dater 110 c.

As another example, in certain embodiments, single user 110 c may grant friend 110 d permission to act on his/her behalf by inviting friend 110 d to join a team and/or friend group belonging to user 110 c. For example, in certain embodiments, in addition to or instead of inviting friend 110 d to connect with user 110 c through matching tool 105 and to be listed as a friend in a friend list belonging to user 110 c, user 110 c may invite friend 110 d to join a team and/or group belonging to user 110 c. In certain embodiments, in response to user 110 c inviting friend 110 d to connect with user 110 c through matching tool 105, matching tool 105 may automatically assign friend 110 d to a team/group belonging to user 110 c. In certain embodiments, joining user 110 c's team and/or group may automatically grant friend 110 d permissions 150 d to act on user 110 c's behalf. For example, in certain embodiments, membership in user 110 c's team/group may permit friend 110 d to receive recommendations of profiles 130 belonging to those daters 110 who are potentially compatible with user 110 c, and to select from amongst the recommended profiles. In some embodiments, membership in user 110 c's team/group may permit friend 110 d to act according to additional permissions 150 d granted to friend 110 d by user 110 c. For example, as described above, dater 110 c may grant friend 110 d permissions 150 d that may include the permission to: (1) select profiles 130 in an attempt to match other users 110 with dater 110 c; (2) suggest profiles 130 to dater 110 c; (3) edit profile 130 c, assigned to dater 110 c; (3) communicate with matches generated for dater 110 c; (4) view the behavior of dater 110 c while interacting with matching tool 105 a; and/or (5) any other appropriate permissions that dater 110 c may grant to friend 110 d. In certain embodiments, permissions 150 may be group specific, such that all of the members of a user's team and/or group may be granted the same permissions 150. For example, single user 110 c may grant first friend 110 d permissions 150 d, which are the same as permissions 150 e granted to second friend 110 e, in response to inviting both first friend 110 d and second friend 110 e to join his/her team and/or group. In some embodiments, single user 110 c may create multiple teams and/or groups and assign each team and/or group a different set of permissions 150. For example, single user 110 c may assign first friend 110 d to a first group and second friend 110 e to a second group. Single user 110 c may then assign permissions 150 d to the first group and permissions 150 e to the second group, where permissions 150 d and permissions 150 e may be different from one another.

This disclosure contemplates that daters 110 a and 110 c may add friends 110 b, 110 d, and/or 110 e to their friend lists, teams, and/or groups in any suitable manner. For example, in certain embodiments, in response to user 110 b receiving and accepting an invite from dater 110 a to register with matching tool 105, the tool may automatically add user 110 b to dater 110 a's friend list and/or team/group. Similarly, in response to dater 110 a receiving and accepting an invite from friend 110 b to register with matching tool 105, the tool may automatically add friend 110 b to dater 110 a's friend list and/or team/group.

As another example, in certain embodiments, dater 110 a may add existing users 110 b to his/her friend list, team(s), and/or group(s), where the existing users 110 b have been identified by matching tool 105 as having already registered with matching tool 105. For example, in response to dater 110 a granting matching tool 105 permission to access the contacts stored on device 115 a of dater 110 a, matching tool 105 may identify those contacts stored on device 115 a who have already registered with matching tool 105. Similarly, in response to dater 110 a granting matching tool 105 permission to access the friend lists stored in applications installed on device 115 a, matching tool 105 may identify those friends listed in the friend lists who have already registered with matching tool 105. Matching tool 105 may identify these contacts/friends in any suitable manner. For example, matching tool 105 may identify a contact stored on device 115 a as having already registered with matching tool 105 by determining that the telephone number listed for the contact is the same as a telephone number provided by a registered user 110. Matching tool 105 may also identify potential friends 110 for dater 110 a based on the current membership of dater 110 a's friend list, teams(s), and/or groups. As a specific example, matching tool 105 may determine that multiple members of dater 110 a's friend list and/or team/group are also members of dater 110 c's friend list and/or team/group. Based on this information, matching tool 105 may determine that a high probability exists that dater 110 c is a friend or acquaintance of dater 110 a. Accordingly, matching tool 105 may suggest to dater 110 a that he/she add dater 110 c to his/her friend list and/or team/group. As another example, in certain embodiments, dater 110 a may add existing users 110 b to his/her friend list and/or team/group by searching through a list of users 110 registered with matching tool 105 and inviting those users 110 that he/she recognizes and/or wishes to add to his/her friend list and/or team/group. As a further example, in certain embodiments, dater 110 a may add existing users 110 b to his/her team/group by viewing the membership lists of the other teams/groups to which dater 110 a may belong (e.g., the teams/groups in which dater 110 a is acting as a friend for another dater) and/or by viewing the friend lists of those users who belong to dater 110 a's friend list (e.g., viewing the friends of dater 110 a's friends).

This disclosure contemplates that a given dater 110 a may form any number of teams and/or groups for him/herself. For example, dater 110 a may place his/her high school friends in a first team/group and his/her college friends in a second team/group. Similarly, a given friend 110 b may be placed in any number of teams/group and/or be granted permission to act on behalf of any number of daters 110. For example, both dater 110 a and dater 110 c may place friend 110 b in each their teams/groups and/or grant friend 110 b permission to act on each of their behalf. Friend 110 b may then choose between acting on behalf of dater 110 a or acting on behalf of dater 110 c, when interacting with matching tool 105. This disclosure contemplates that in addition to being a friend of both dater 110 a and dater 110 c, user 110 b may also be a dater him/herself. Accordingly, user 110 b may choose between acting on behalf of dater 110 a, dater 110 c, or him/herself, when interacting with matching tool 105. During a single online dating session, user 110 b may switch between acting on behalf of dater 110 a, dater 110 c, and him/herself. Switching between acting of behalf of dater 110 a, dater 110 c, or user 110 b, him/herself, may consist simply of selecting one of dater 110 a, dater 110 c, and user 110 b, him/herself, from a drop-down menu displayed by matching tool 105 on device 115 b.

After a user 110 registers with matching tool 105 as either “single” or “in a relationship,” matching tool 105 may transmit request 185 to user 110 seeking personal information from user 110. FIG. 2B illustrates the process by which profile generator 160 of matching tool 105 may request personal information from users 110, receive personal information from users 110, and generate profiles 130 using this personal information.

In response to receiving an indication 220 from dater 110 a, indicating that dater 110 a would like to register as “single” with matching tool 105, profile generator 160 may send request 225 to dater 110 a, seeking personal information from dater 110 a. This disclosure contemplates that request 225 may seek any personal information from dater 110 a suitable to generate a profile 130 a for dater 110 a and/or to identify dater 110 a in the online dating system generated by matching tool 105. For example, the personal information sought by request 225 may include dater 110 a's: (1) name; (2) birthdate; (3) gender; (4) height; (5) political views; (6) physical activity level; (7) religion; (8) occupations; and/or (9) astrological sign. The personal information sought by request 225 may also include whether or not dater 110 a has any children or pets, whether or not dater 110 a smokes or drinks alcohol, and/or any other personal information suitable to identify dater 110 a and/or facilitate matching between dater 110 a and other daters 110. In certain embodiments, request 225 may also seek one or more photos of dater 110 a. In some embodiments, request 225 may additionally ask dater 110 a to describe him/herself, by providing one or more free-form descriptions of him/herself. For example, request 225 may ask dater 110 a to describe him/herself by using (1) text only; (2) emojis only; (3) GIFs only; and/or (4) any combination of text, emojis, and/or GIFs. In response to receiving request 225, dater 110 a may transmit personal information 230 to matching tool 105 for use by profile generator 160.

In certain embodiments, profile generator 160 may use request 225 to discover what dater 110 a may be looking for in a potential match. For example, request 225 may ask dater 110 a to specify his/her preference in gender and age range of a potential match. As another example, request 225 may also ask dater 110 a to specify a distance within which dater 110 a would prefer a potential match to be located. As a further example, request 225 may ask dater 110 a to indicate how important certain factors are when looking for a match. In response to receiving such request 225, dater 110 a may provide information 230 indicating the relative importance that he/she places on such factors. For example, information 230 may indicate that dater 110 a places a high importance on the religion of any potential matches and a low importance on the political views of any potential matches.

As illustrated in FIG. 2B, in response to receiving information 230 from dater 110 a, profile generator may use information 230 to generate profile 130 a, assigned to dater 110 a. For example, profile generator 160 may store the responses provided by dater 110 a to each request 225 for information in profile 130 a. Profile generator 160 may also store dater 110 a's friend list and/or one or more lists of the members of dater 110 a's team(s)/group(s), as well as any teams/groups to which dater 110 a belongs in profile 130 a. For example, in certain embodiments, profile 130 a may indicate that friend 110 b belongs to dater 110 a's team/group and that dater 110 a is a member of dater 110 c's team/group. As another example, in certain embodiments, profile 130 a may indicate that friend 110 b is a friend of dater 110 a.

In certain embodiments, profile generator 160 may generate the same type of profile 130 for users 110 b who register with matching tool 105 as “in a relationship” as users 110 a who register as “single.” For example, in certain embodiments, in response to receiving an indication 235 from friend 110 b, indicating that friend 110 b would like to register as “in a relationship” with matching tool 105, profile generator 160 may send request 240 to friend 110 b, seeking the same types of personal information from friend 110 b as request 225 sought from dater 110 a. On the other hand, in some embodiments, profile generator 160 may generate less detailed profiles 130 for users 110 b who register with matching tool 105 as “in a relationship,” as compared with users 110 a who register with matching tool 105 as “single.” For example, in response to receiving indication 235 from friend 110 b that friend 110 b would like to register as “in a relationship,” profile generator 160 may send request 240 to friend 110 b, seeking basic personal information from friend 110 b. For example, request 240 may ask friend 110 b for his/her: (1) name; (2) birthdate; (3) geographical location; (4) telephone number; and/or (5) any other personal information suitable to identify friend 110 b to other users 110. Profile generator 160 may seek more detailed personal information from dater 110 a as compared with friend 110 b, because matching tool 105 may be configured to generate recommendations of other, potentially compatible daters 110 for dater 110 a, based at least in part on the information included in profile 130 a of dater 110 a. On the other hand, the information included in profile 130 b of friend 110 b may simply be used to help dater 110 a identify friend 110 b as an individual that dater 110 a knows outside of the online dating experience generated by matching tool 105 and that dater 110 a would like to invite to join his/her friend list and/or team/group.

In certain embodiments, profile generator 160 may add information to profile 130 b, belonging to friend 110 b, in response to the activities performed by friend 110 b on behalf of dater 110 a. For example, profile generator 160 may add information to profile 130 b to indicate (1) the number of times that friend 110 b has selected a profile on behalf of dater 110 a; (2) the number of matches that have been generated for dater 110 a as a result of friend 110 b's selections; (3) the rate at which friend 110 b selects profiles for dater 110 a (e.g., the number of selections per day); (4) how selective friend 110 b is in choosing profiles (e.g., friend 110 b may be assigned a high selectivity factor if friend 110 b selects only a small portion of the profiles 130 presented to him/her, or a low selectivity factor if friend 110 b selects a large portion of the profiles presented to him/her; (5) the number of positive interactions experienced by dater 110 a based on selections made by friends 110 b, which may be determined automatically based on data captured by matching tool 105 or manually entered by dater 110 a; and/or (6) any other information relating to friend 110 b's activities while interacting with matching tool 105. For example, profile generator 160 may also add badges to profile 130 b, to indicate achievements obtained by friend 110 b. For example, profile generator 160 may add a “super-setter-upper” badge to profile 130 b to indicate that the number of matches that friend 110 b has generated for dater 110 a has exceeded a given threshold.

Profile generator 160 may be a software module stored in memory 140 and executed by processor 135. An example algorithm for profile generator 160 is as follows: (1) receive indication 220 that dater 110 a seeks to register as “single” with matching tool 105; (2) transmit request 225 to dater 110 a, asking for detailed personal information from dater 110 a; (3) receive detailed personal information 230 from dater 110 a; (4) in response to receiving detailed personal information 230 from dater 110 a, generate profile 130 a, based on detailed personal information 230; (5) store profile 130 a in database 125; (6) receive indication 235 that friend 110 b seeks to register as “in a relationship” with matching tool 105; (7) transmit request 240 to friend 110 b, asking for basic personal information from friend 110 b; (8) receive basic personal information 245 from friend 110 b; (9) in response to receiving basic personal information 245 from friend 110 b, generate profile 130 b, based on basic personal information 245; and (10) store profile 130 b in database 125. While the above example presents one possible algorithm for profile generator 160, this disclosure contemplates that profile generator 160 may use any algorithm operable to receive information from users 110 and generate profiles 130 based on such information. For example, the algorithm used by profile generator 160 may include modifications, additions, or omissions to the example algorithm presented above. Furthermore, the algorithm used by profile generator 160 may include more, fewer, or other steps as compared with the example algorithm presented above, and the steps may be performed in parallel or in any suitable order.

While illustrated in FIG. 2B as dater 110 a interacting with profile generator 160 to generate profile 130 a for him/herself and friend 110 b similarly interacting with profile generator 160 to generate profile 130 b for him/herself, in certain embodiments, friend 110 b may be able to interact with profile generator 160 to generate profile 130 a for dater 110 a. For example, in certain embodiments, dater 110 a may grant friend 110 b permission to edit and/or complete his/her profile 130 a. In some embodiments, dater 110 a may grant friend 110 b permission to suggest edits to dater 110 a's profile 130 a. Dater 110 a may then choose whether or not to accept the suggested edits. As another example, after registering as “in a relationship” with matching tool 105, friend 110 b may be permitted to generate a profile 130 for one or more of his/her single friends who have not yet registered with matching tool 105. In this manner, friend 110 b may be able to receive recommendations and select potential matches for his/her single friend before the single friend has ever interacted with matching tool 105. This may be desirable as it may enable friend 110 b to participate in the online dating experience even if none of his/her single friends have completed the registration process at the time friend 110 b registers with the system. This may also be desirable as the single friend for whom friend 110 b has generated a profile may be more inclined to register with matching tool 105 if he/she knows that he/she has already been matched with one or more daters 110 a and/or 110 c in the system, before he/she has even signed up.

In certain embodiments, for privacy reasons, friend 110 b may only be permitted by matching tool 105 to generate a profile 130 for one of his/her single friends who have not yet registered with matching tool 105 if friend 110 b and/or matching tool 105 first obtains the permission of the single friend(s). For example, in certain embodiments, in response to friend 110 b generating profile 130 a for his/her single friend, matching tool 105 may send a message (e.g., an email or SMS message) to the single friend requesting that the single friend approve the profile. If the single friend declines to approve profile 130 a, the profile may not be viewable, searchable, or selectable by any users 110 of matching tool 105.

In certain embodiments, friend 110 b may not be required to register with matching tool 105 or to provide any profile information to matching tool 105 prior to interacting with matching tool 105. For example, in certain embodiments, dater 110 a may permit friend 110 b to select profiles 130 on behalf of dater 110 a by providing friend 110 b access to the online dating system generated by matching tool 105 through a rich media component embedded in an email and/or SMS message. This rich media component may provide friend 110 b with a singular instance of access to matching tool 105, where friend 110 b is granted access to the tool as dater 110 a (e.g., matching tool 105 may attribute any actions performed by friend 110 b to dater 110 a). Enabling friend 110 b to participate in the online-matching experience of dater 110 a without registering with matching tool 105 or providing any profile information to matching tool 105 may be desirable for those individuals who are in a relationship and do not want to download and/or register with an online dating tool out of fear of the appearance of impropriety.

In certain embodiments, matching tool 105 may enable users 110 to share profile information onto one or more social media networks. As an example, matching tool 105 may enable dater 110 a to share his/her profile picture onto a social media network. Dater 110 a may wish to share his/her profile picture onto a social media network in order to obtain feedback from his/her connections on the social media network, and/or to encourage his/her connections on the social media network to join matching tool 105 and to become members of dater 110 a's friend list and/or team/group. As another example, matching tool 105 may enable friend 110 b of dater 110 a to share profile information belonging to dater 110 a onto one or more social media networks. For example, friend 110 b may share a profile picture belonging to dater 110 a onto a social media network, to advertise that dater 110 a is seeking a relationship and to encourage members of the social media network to join matching tool 105 to attempt to match with dater 110 a. In certain embodiments, friend 110 b may only be permitted to share profile information belonging to dater 110 a onto social media networks if dater 110 a has granted friend 110 b the permission to do so (e.g., dater 110 a has set permissions 150 b for friend 110 b to enable friend 110 b to share dater 110 a's profile information).

In certain embodiments, matching tool 105 may enable users 110 to publish and/or share a link to their profiles 130 and/or profiles 130 of their friends. For example, matching tool 105 may enable dater 110 a to publish and/or share a link to his/her profile 130 a on one or more social networks, on a website, in an email, in an SMS message, or in any other suitable manner. As another example, matching tool 105 may enable friend 110 b of dater 110 a to publish and/or share a link to dater 110 a's profile on one or more social networks, on a website, in an email, in an SMS message, or in any other suitable manner.

In certain embodiments, matching tool 105 may charge a subscription fee to users 110. This subscription fee may be limited to those users who register as “single” with matching tool 105, and become daters in the system, or the fee may be charged to both users who register as “single” as well as users who register as “in a relationship” with matching tool 105.

In certain embodiments, matching tool 105 may enable one or more of the members of a dater's friend list and/or team/group to pay for his/her subscription fee. As an example, in certain embodiments, an interactive option may exist on a dater's profile 130, inviting the dater's friends to pay all or part of the dater's subscription costs. For example, the option may permit a friend to pay for the dater's subscription costs for a set period of time (e.g., two months), or may permit a friend to pay for a portion of the dater's recurring subscription charge (e.g., $5 dollars out of the total subscription charge). In certain embodiments, the option for a friend to pay for all or part of the dater's subscription costs may exist on all dater profiles 130. In other embodiments, a dater 110 may choose to add the option to his/her profile 130. In some embodiments, matching tool 105 may additionally enable a dater 110 to solicit subscription contributions from his/her friends by adding a personalized message to his/her profile 130, requesting contributions, and/or by sending messages to his/her team/group members requesting contributions. In certain embodiments, if a dater 110 lapses in one or more of his subscription payments, matching tool 105 may solicit the lapsed payments from dater 110's friends. For example, matching tool 105 may send a message to dater 110's friends asking the friends to “chip in and help dater 110 continue his search for love,” or any other suitable request for monetary contributions from dater 110's friends.

In certain embodiments, in addition to the payment of a subscription free, matching tool 105 may enable dater 110 and/or dater 110's friends to pay for any number of a-la-carte features. For example, user 110 may purchase a “powerup” to boost the visibility of his/her profile 130 or of a profile 130 belonging to one of his/her friends. As another example, by default, user 110 a's connections (e.g., list of friends and/or team/group members) may not be visible to another user 110 d, who is not connected with user 110 a, without payment of a fee. User 110 d may wish to pay such a fee to view user 110 a's connections in order to help the user evaluate user 110 a when determining whether or not to attempt to match with user 110 a or to select user 110 a on behalf of one of user 110 d's friends.

While FIG. 2B illustrates profile generator 160 generating profiles 130 for dater 110 a and friend 110 b, this disclosure contemplates that profile generator 160 may generate profiles 130 for any number of users 110. Furthermore, this disclosure contemplates that modifications, additions, or omissions may be made to profile generator 160 without departing from the scope of the invention. For example, this disclosure contemplates that some or all of the operations described above as being performed by profile generator 160, may be performed by other components of matching tool 105. Such components may be integrated or separated. Furthermore, the operations may be performed using any suitable logic comprising software, hardware, and/or other logic.

In certain embodiments, once dater 110 a has registered with matching tool 105, recommendation engine 165 may generate recommendations of other potentially compatible daters 110 for dater 110 a. FIGS. 3A through 3C illustrate examples of the behavior of recommendation engine 165 of matching tool 105, in response to transmitting recommendations of profiles 130 and receiving profile selections from dater 110 a and/or one or more of friends 110 b and 110 f of dater 110 a. FIG. 3A illustrates the behavior of recommendation engine 165 when presenting profile recommendations 310 for dater 110 a to dater 110 a, and FIGS. 3B and 3C illustrate examples of the behavior of recommendation engine 165 when presenting profile recommendations 310 for dater 110 a to friends of dater 110 a.

As illustrated, FIGS. 3A through 3C represent scenarios that may occur at a given point in time at which recommendation algorithm 145 is configured to generate first series of profile recommendations 310 for dater 110 a. The scenario presented in FIG. 3A may occur if, in response to transmitting first series of profile recommendations 310, recommendation engine 165 receives selection 315 a from dater 110 a, prior to receiving any selections 315 b and/or 315 c from friends 110 b and/or 110 f of dater 110 a. The scenario presented in FIG. 3B may occur if, in response to response to transmitting first series of profile recommendations 310, recommendation engine 165 receives selection 315 b from first friend 110 b, prior to receiving any selections 315 a from dater 110 a or any selections 315 c from second friend 110 f. The scenario presented in FIG. 3C may occur if, in response to transmitting first series of profile recommendations 310, recommendation engine 165 receives selection 315 b from first friend 110 b and selection 351 c from second friend 110 f, prior to receiving any selections 315 a from dater 110 a.

As mentioned above, FIG. 3A illustrates an example operation of recommendation engine 165 in response to receiving request 305 a from dater 110 a seeking recommendations of profiles 130, belonging to other daters 110 who are potentially compatible with dater 110 a. As illustrated in FIG. 3A, in response to receiving request 305 a, recommendation engine 165 uses recommendation algorithm 145 to generate a set of profile recommendations for dater 110 a. For example, recommendation engine 165 may generate first series of profile recommendations 310. First series of profile recommendations 310 may include any number of profiles 130, belonging to daters 110 that recommendation engine 165 has determined may potentially be compatible with dater 110 a. For example, in certain embodiments, first series of profile recommendations 310 may include an ordered set of dater profiles, {130 g, 130 h, 130 i, 130 j, 130 k}, belonging, respectively, to daters 110 g, 110 h, 110 i, 110 j, and 110 k, and ordered according to a predicted compatibility between each dater and dater 110 a (e.g., the fact that profile 130 g appears earlier in series 310 than profile 130 h may indicate that matching algorithm 145 has predicted that dater 110 a is likely more compatible with dater 110 g than with dater 110 h).

In response to receiving first series of profile recommendations 310, dater 110 a may transmit one or more selections 315 a from first series of profile recommendations 310, identifying profiles 130 belonging to daters 110 with whom dater 110 a would like to be matched. For example, after viewing profiles 130 g, 130 h, 130 i, 130 j, and 130 k, dater 110 a may react favorably to the information contained in profile 130 h, and, therefore, may wish to be matched with and/or communicate with dater 110 h. Accordingly, dater 110 a may transmit a selection 315 a of profile 130 h to matching tool 105. This disclosure contemplates that dater 110 a may transmit selection 315 a to matching tool 105 in any suitable manner. For example, in certain embodiments, dater 110 a may transmit selection 315 a to matching tool 105 by interacting with a button displayed by matching tool 105 on a display of device 115 a, belonging to dater 110 a. As another example, in certain embodiments, dater 110 a may transmit selection 315 a to matching tool 105 by gesturing on the display of device 115 a.

In response to receiving selection 315 a, recommendation algorithm 145 may be configured to use selection 315 a to update the profile recommendations that recommendation engine 165 may transmit to dater 110 a in the future. For example, in response to receiving selection 315 a, recommendation algorithm 145 may be configured to transmit second series of profile recommendations 320 a to dater 110 a, where second series of profile recommendations 320 a is different from first series of profile recommendations 310. As an example, in certain embodiments, second series of profile recommendations 320 a will not include those profiles 130 selected by dater 110 a, through selection 315 a. As another example, in certain embodiments, second series of profile recommendations 320 a will not include those profiles 130 from first series of profile recommendations 310 for which dater 110 a may have indicated a negative preference. As a further example, in certain embodiments, second series of profile recommendations 320 a may include new profiles 130, not present in first series of profile recommendations 310. Second series of profile recommendations 320 a may also include a reordering of profiles 130, previously presented in first series of profile recommendations 310. This disclosure contemplates that the differences between first series of profile recommendations 310 and second series of profile recommendations 320 a may arise as a result of selection 315 a, made by dater 110 a.

This disclosure contemplates that recommendation algorithm 145 may be any algorithm configured to generate recommendations of profiles 130 belonging to other daters 110 who are potentially compatible with dater 110 a. As an example, in certain embodiments, recommendation algorithm 145 may be configured to generate profile recommendations 310 and 320 a based at least in part on a comparison between features of profile 130 a, belonging to dater 110 a, and the features of profiles 130 belonging to other daters 110. For example, recommendation algorithm 145 may be configured to determine that dater 110 a and dater 110 g are likely compatible based at least in part on a high degree of similarity between profile information 230 provided by dater 110 a and the profile information provided by dater 110 g. Such profile information may, for example, indicate that both dater 110 a and dater 110 g are non-smokers who own dogs and enjoy hiking.

As another example, recommendation algorithm 145 may be configured to generate profile recommendations 320 a based at least in part on previous selections 315 a made by dater 110 a. For example, recommendation algorithm 145 may be configured to learn from previous selections 315 a, to identify those profile features that dater 110 a finds desirable in potential matches. As a specific example, recommendation algorithm 145 may determine that dater 110 a tends to select profiles 130 belonging to daters 130 that indicate that the daters 130 are more than six feet tall, non-religious, and like cats. Accordingly, recommendation algorithm 145 may place a greater importance on profiles 130 belonging to other daters 130 who similarly indicate through their profiles 130 that they are more than six feet tall, non-religious, and like cats, when determining daters 110 who are potentially compatible with dater 110 a. As another example, recommendation algorithm 145 may be configured to analyze the photos provided in the profiles previously selected by dater 110 a, to determine the physical qualities of other daters 110 that dater 110 a finds most appealing. For example, recommendation algorithm 145 may determine that dater 110 a tends to select profiles 130 that include pictures of daters with black hair who are playing the guitar. Accordingly, recommendation algorithm 145 may place a greater importance on profiles 130 that include photos of daters with black hair who are playing the guitar, as compared with other profiles 130, when determining daters 110 who are potentially compatible with dater 110 a.

As another example, recommendation algorithm 145 may be configured to generate recommendations 320 a based at least in part on previous selections 315 a made by dater 110 a as well as previous selections made by other daters 110. For example, recommendation algorithm 145 may be configured to generate recommended profiles 320 a by identifying other daters 110 with similar matching tastes to dater 110 a. For instance, recommendation algorithm 145 may determine that selections 315 a made by dater 110 a tend to be similar to the selections made by a different dater 110 m. Therefore, recommendation algorithm 145 may determine that dater 110 a and dater 110 m have similar tastes in profiles 130. Accordingly, if dater 110 m selects a profile 130 that dater 110 a has not yet seen, recommendation algorithm 145 may present such profile to dater 110 a under the assumption that a high probability exists that dater 110 a will also select the profile.

As a further example, recommendation algorithm 145 may be configured to generate profile recommendations 320 a based at least in part on the relative popularity of profile 130 a, belonging to dater 110 a, as compared with the popularity of other profiles 130, belonging to other daters 110. For example, recommendation algorithm 145 may group users 110 based on the number of times their profiles 130 have been selected by other users. This number may correspond to a relative attractiveness score (e.g., a profile 130 selected a large number of times may be assigned a higher attractiveness score than a profile 130 selected a smaller number of times). Recommendation algorithm 145 may then generate profile recommendations 310 and 320 a by recommending to dater 110 a those profiles 130 that belong to the same attractiveness grouping as profile 110 a, belonging to dater 110 a, under the assumption that people are more likely to match with people of similar attractiveness.

Recommendation engine 165 may be configured to transmit recommendations 310 not only to dater 110 a, but also to friends of dater 110 a, for selection therefrom. FIG. 3B illustrates an example of the behavior of recommendation engine 165 when presenting profile recommendations 310 for dater 110 a to friend 110 b of dater 110 a.

As illustrated in FIG. 3B, in response to receiving request 305 b from first friend 110 b, asking for recommendations of profiles 130 belonging to other daters 110 who are potentially compatible with dater 110 a, recommendation engine 165 uses recommendation algorithm 145 to generate first series of profile recommendations 310. This disclosure contemplates that recommendation engine 165 may transmit the same first series of profile recommendations 310 to friend 110 b as recommendation engine 165 would transmit to dater 110 a. As described above, first series of profile recommendations 310 may include an ordered set of dater profiles, {130 g, 130 h, 130 i, 130 j, 130 k}, belonging, respectively, to daters 110 g, 110 h, 110 i, 110 j, and 110 k, and ordered according to a predicted compatibility between each dater and dater 110 a (e.g., recommendation engine 165 may present friend 110 b with recommendations of those daters 110 that recommendation algorithm 145 has determined are most likely compatible with dater 110 a, prior to presenting recommendations of other daters 110 that recommendation algorithm 145 has determined may be less compatible with dater 110 a).

In response to receiving first series of profile recommendations 310, first friend 110 b may transmit one or more selections 315 b from first series of profile recommendations 310, identifying profiles 130 belonging to daters 110 with whom first friend 110 b would like to see dater 110 a matched. For example, after viewing profiles 130 g, 130 h, 130 i, 130 j, and 130 k, first friend 110 b may believe that dater 110 a and dater 110 i would make a good match. Accordingly, dater 110 a may transmit a selection 315 b of profile 130 i to matching tool 105.

In response to receiving selection 315 b from friend 110 b, the behavior of recommendation algorithm 145 may depend on the permissions dater 110 a has granted to friend 110 b. As an example, permissions 150 b may indicate that dater 110 a has granted first friend 110 b the permission to select profiles 130 to present as suggestions to dater 110 a, but not to select profiles 130 as potential matches for dater 110 a. Accordingly, in response to receiving selection 315 b, recommendation algorithm 145 may be configured to reorder first series of profile recommendations 310 to form third series of profile recommendations 320 b, placing profile(s) 130, associated with selection 315 b, earlier in third series of profile recommendations 320 b than in first series of profile recommendations 310. For example, if first friend 110 b transmits a selection 315 b of profile 130 i to recommendation engine 165, recommendation algorithm 145 may transmit a third series of profile recommendations 320 b to dater 110 b that includes the same dater profiles 130 as first series of profile recommendations 310 (namely, profiles 130 g, 130 h, 130 i, 130 j, and 130 k), but ordered to place profile 130 i at the beginning of the series (e.g., the next time dater 110 a requests that recommendation engine 165 transmit profile recommendations to dater 110 a, recommendation engine 165 may present dater 110 a with those profiles 130 suggested to dater 110 a by friend 110 b, prior to presenting other profiles 130 not suggested to dater 110 a).

In certain embodiments, in response to receiving selection 315 b from friend 110 b, recommendation engine 165 may be configured to transmit a third series of profile recommendations 320 b to dater 110 b that includes an indication on profile 130, chosen by friend 110 b as selection 315 b, indicating that friend 110 b has suggested profile 130 to dater 110 a. For example, recommendation engine 165 may be configured to include a statement on the suggested profile 130 such as “friend 110 b thinks that the two of you would make a great match,” or any similar phrase indicating that friend 110 b has suggested profile 130 to dater 110 a. Where more than one friend 110 b has suggested a given profile 130 to dater 110 a, recommendation engine 165 may be configured to include an indication on the profile of the number of friends who have recommended the profile.

In some embodiments, permissions 150 b may indicate that dater 110 a has granted first friend 110 b the permission to select profiles 130 as potential matches for dater 110 a. Accordingly, in response to receiving selection 315 b, recommendation engine 145 may be configured to use selection 315 b to update the profile recommendations generated for dater 110 a, in a similar manner as described above, in the scenario of FIG. 3A, in which recommendation engine received selection 315 a from dater 110 a. For example, in response to receiving selection 315 b, recommendation algorithm 145 may be configured to transmit a third series of profile recommendations 320 b to dater 110 a, where third series of profile recommendations 320 b is different from first series of profile recommendations 310. As an example, in certain embodiments, third series of profile recommendations 320 b will not include those profiles 130 selected by friend 110 b through selection 315 b. As another example, in certain embodiments, third series of profile recommendations 320 b will not include those profiles 130 from first series of profile recommendations 310 for which friend 110 b may have indicated a negative preference. Alternatively, in some embodiments, third series of profile recommendations 320 b may continue to include those profiles 130 from first series of profile recommendations 310 for which friend 110 b may have indicated a negative preference, to provide dater 110 a, him/herself, an opportunity to evaluate the profiles. As a further example, in certain embodiments, third series of profile recommendations 320 b may include new profiles 130, not present in first series of profile recommendations 310. Third series of profile recommendations 320 b may additionally include a reordering of profiles 130, previously presented in first series of profile recommendations 310.

This disclosure contemplates that third series of profile recommendations 320 b may be different from second series of profile recommendations 320 a. This difference may arise from the fact that friend 110 b may have provided different selections 315 b to recommendation engine than dater 110 a, him/herself would have provided. For example, as described above, first friend 110 b may have selected profile 130 i, whereas dater 110 a would have selected profile 130 h. However, even if first friend 110 b selected the same profile(s) 130 as dater 110 a, him/herself would have selected, in certain embodiments, third series of profile recommendations 320 b may nevertheless still be different from second series of profile recommendations 320 a. This difference may arise as a result of the fact that recommendation algorithm 145 may apply different weights to the selections 315 a and 315 b made by dater 110 a and friend 110 b, respectively. For example, matching tool 105 may assign a first weight 155 a to selections 315 a made by dater 110 a and a second weight 155 b to selections 315 b made by friend 110 b, on behalf of dater 110 a. Recommendation algorithm 145 may then use these weights 150 when generating new recommendations for dater 110 a (e.g., second series of profile recommendations 320 a and third series of profile recommendations 320 b). For example, if weight 155 a, assigned to dater 110 a, is significantly larger than weight 155 b, assigned to friend 110 b, then selections 315 a made by dater 110 a may have a larger impact on the resulting profile recommendations 320 a generated by recommendation algorithm 145 than the impact made by selections 315 b on resulting profile recommendations 320 b.

Matching tool 105 may determine weights 155 in any suitable manner. For example, in certain embodiments, matching tool 105 may assign higher weights 155 a and 155 c to daters 110 a and 110 c, as compared to friends 110 b, 110 d, 110 e, and 110 f, given that the daters are the ones that must ultimately approve of a match in order to form a successful dating relationship. As another example, in certain embodiments, matching tool 105 may assign weights 155 based on the relative selectivity of users 110. For example, matching tool 105 may assign a low weight 155 to a user who selects the majority of profiles 130 presented to him/her and a higher weight 155 to a user who selects only a portion of the profiles 130 presented to him/her. As another example, in certain embodiments, matching tool 105 may assign weights 155 based on the success of users 110 in generating matches for a given dater 110 a. For example, matching tool 105 may assign a higher weight 155 b to a friend 110 b whose selections 315 b tend to lead to matches (as described below, in the discussion of FIGS. 4A through 4C) more often than selections 315 a, received from dater 110 a. As a further example, in certain embodiments, matching tool 105 may assign weights 155 based not simply on the success of users 110 in generating matches for a given dater 110 a, but also on the success of users 110 in generating successful matches for dater 110 a. For example, in certain embodiments matching tool 105 may be configured to determine whether or not dater 110 a met with his/her matches, and to solicit feedback from dater 110 a and/or his/her matches to determine if the matches were successful. As a specific example, matching tool 105 may determine that dater 110 a and dater 110 c likely met in person, by monitoring a conversation between dater 110 a and dater 110 c. For instance, the conversation may indicate that dater 110 a and dater 110 c exchanged phone numbers and/or exchanged certain keywords and/or phrases indicative of users planning to meet with one another. In response to determining that dater 110 a and dater 110 c likely met in person, matching tool 105 may transmit surveys to dater 110 a and dater 110 c, asking the daters to evaluate one another. Matching tool 105 may assign a higher weight 155 b to a friend 110 b whose selections 315 b tend to lead to successful matches (as determined based on the survey responses provided by dater 110 a and his/her matches) more often than selections 315 a, received from dater 110 a.

FIG. 3C illustrates an example of the behavior of recommendation engine 165 when receiving selections 315 from multiple friends 110 of dater 110 a. While this disclosure contemplates that recommendation engine 165 may receive selections 315 from any number of friends 110, for simplicity, FIG. 3C presents a situation in which recommendation engine 165 receives selection 315 b from friend 110 b and selection 315 c from friend 110 f.

Similar to the situation described above, in the discussion of FIG. 3B, the behavior of recommendation algorithm 145 in response to receiving selection 315 b from friend 110 b and selection 315 c from friend 110 f, the behavior of recommendation algorithm 145 may depend on the permissions dater 110 a has granted to friend 110 b and friend 110 f. As an example, permissions 155 b and 155 f may indicate that dater 110 a has granted both first friend 110 b and second friend 110 f permission to select profiles 130 to present as suggestions to dater 110 a, but not to select profiles 130 as potential matches for dater 110 a. Accordingly, in response to transmitting first series of profile recommendations 310 to both first friend 110 b and second friend 110 f, recommendation engine 165 may receive profile suggestions (in the form of selections 315) from both first friend 110 b and second friend 110 f In certain embodiments, recommendation engine may generate a resulting series of profile recommendations 320 c to transmit to dater 110 a by placing an indication on each profile 130 selected by first friend 110 b and/or second friend 110 f, indicating that first friend 110 b and/or second friend 110 f has suggested the profile for dater 110 a. In some embodiments, recommendation engine may generate a resulting series of profile recommendations 320 c to transmit to dater 110 a by reordering first series of profile recommendations 310 to place a suggested profile 130 at the beginning of the series, each time recommendation engine receives a selection 315 from first friend 110 b or second friend 110 f, suggesting a profile. For example, if recommendation engine 165 first receives selection 315 b of profile 130 k from first friend 110 b, recommendation engine 165 may reorder first series of profile recommendations 310 from {130 g, 130 h, 130 i, 130 j, 130 k} to {130 k, 130 g, 130 h, 130 i, 130 j}. If recommendation engine 165 next receives selection 315 c of profile 130 j from second friend 110 b, recommendation engine 165 may further reorder first series of profile recommendations to {130 j, 130 k, 130 g, 130 h, 130 i}. Recommendation engine 165 may then transmit this reordered series of profile recommendations to dater 110 a as fourth series of profile recommendations 320 c.

In certain embodiments in which recommendation engine 165 uses suggestions 315 b and 315 c to generate a reordered series of profile recommendations 320 c to transmit to dater 110 a, recommendation engine 165 may reorder first series of profile recommendations 310 according to weights 155 b and 155 f assigned to friends 110 b and 110 f, respectively (and accordingly, assigned to the selections 315 b and 315 c received from friends 110 b and 110 f). In such embodiments, weights 155 may be used to determine the relative movement prescribed by recommendation engine 165 to a profile specified by selection 315, when reordering the profiles presented in first series of profile recommendations 310, to generate profile recommendations 320 c. For example, if a higher weight 155 b is assigned to selection 315 b of profile 130 k than weight 155 c, assigned to selection 315 c of profile 130 j, recommendation engine 165 may reorder first series of profile recommendations 310 to place profile 130 k earlier in the resulting series than profile 130 j (e.g., recommendation engine 165 may assign a large movement to profile 130 k and a smaller movement to profile 130 j). For example, recommendation engine 165 may reorder first series of profiles recommendations 310 from {130 g, 130 h, 130 i, 130 j, 130 k} to {130 k, 130 g, 130 h, 130 j, 130 i}, and transmit this reordered series of profile recommendations to dater 110 a as fourth series of profile recommendations 320 c. In this manner, recommendation engine 165 may present dater 110 a with those profiles 130 suggested by friend 110 b prior to presenting dater 110 a with those profiles 130 suggested by friend 110 f. In certain embodiments, the weights 155 assigned to friends 110 b and 110 f may correspond directly with the size of the movement that recommendation engine 165 may give to the profiles 130 selected by friends 110 b and 110 f, when reordering first series of profile recommendations 310. For example, a value of 1 for weight 155 b may indicate that profiles 130 suggested for dater 110 a by first friend 110 b are to be moved up one location in the reordered series of profile recommendations 320 c to be sent to dater 110 a, as compared with their locations in first series of profile recommendations 310. Similarly, a value of 5 for weight 155 f may indicate that the profiles 130 suggested for dater 110 a by second friend 110 f are to be moved up five locations in the reordered series of profile recommendations 320 c, as compared with their locations in first series of profile recommendations 310.

Matching tool 105 may determine weights 155 in any suitable manner. As an example, in certain embodiments, matching tool 105 may assign weights 155 based on the relative selectivity of friends 110 b and 110 f. For example, matching tool 105 may assign a low weight 155 b to friend 110 b if friend 110 b tends to select the majority of profiles 130 presented to him/her and a higher weight 155 f to friend 110 f if friend 110 f tends to select a smaller portion of the profiles 130 presented to him/her. As another example, in certain embodiments matching tool 105 may assign weights 155 based on the relative success of the suggestions made by friend 110 b as compared with friend 110 f. For example, if dater 110 a tends to select a majority of the suggestions made by friend 110 b, matching tool 105 may assign a high weight 155 b to friend 110 b. On the other hand, if dater 110 a tends to reject a majority of the suggestions made by friend 110 f, matching tool 105 may assign a low weight 155 f to friend 110 f. As a further example, in certain embodiments, matching tool 105 may assign weights 155 based not simply on the success of users 110 in generating matches for a given dater 110 a, but also on the success of users 110 in generating successful matches for dater 110 a. For example, in certain embodiments matching tool 105 may be configured to determine whether or not dater 110 a met with his/her matches, and to solicit feedback from dater 110 a and/or his/her matches to determine if the matches were successful. As a specific example, matching tool 105 may determine that dater 110 a and dater 110 c likely met in person, by monitoring a conversation between dater 110 a and dater 110 c. For instance, the conversation may indicate that dater 110 a and dater 110 c exchanged phone numbers and/or exchanged certain keywords and/or phrases indicative of users planning to meet with one another. In response to determining that dater 110 a and dater 110 c likely met in person, matching tool 105 may transmit surveys to dater 110 a and dater 110 c, asking the daters to evaluate one another. Matching tool 105 may assign a higher weight 155 b to a friend 110 b whose selections 315 b tend to lead to successful matches (as determined based on the survey responses provided by dater 110 a and his/her matches) more often than selections 315 c, received from friend 110 f.

In certain embodiments, rather than generating a reordered series of profile recommendations in response to receiving suggestions from friends 110 b and/or 110 f, matching tool 105 may use the suggestions to generate a leaderboard of the suggested profiles 130. For example, matching tool 105 may generate a leaderboard that lists the ten profiles 130 that have obtained the greatest number of suggestions from dater 110 a's friends. Generating such a leaderboard may be desirable in certain embodiments in which dater 110 a is a famous individual, with a very large list of friends and/or team/group.

In some embodiments, permissions 155 b and 155 f may indicate that dater 110 a has granted both first friend 110 b and second friend 110 f permission to select profiles 130 as potential matches for dater 110 a. In such embodiments, in response to receiving selections 315 b and 315 c, recommendation engine 145 may be configured to use both selections 315 b and 315 c to update the profile recommendations generated for dater 110 a, in a similar manner as described above, in the scenario of FIG. 3B, in which recommendation engine received selection 315 b from friend 110 b. For example, in response to receiving selections 315 b and 315 c, recommendation algorithm 145 may be configured to transmit fourth series of profile recommendations 320 c to dater 110 a, where fourth series of profile recommendations 320 c is different from first series of profile recommendations 310. As an example, in certain embodiments, fourth series of profile recommendations 320 c will not include those profiles 130 selected by friend 110 b through selection 315 b and by friend 110 f through selection 315 c. As another example, in certain embodiments, fourth series of profile recommendations 320 c will not include those profiles 130 from first series of profile recommendations 310 for which friend 110 b and/or friend 110 f may have indicated a negative preference. Alternatively, in some embodiments, fourth series of profile recommendations 320 c may continue to include those profiles 130 from first series of profile recommendations 310 for which friend 110 b and/or friend 110 f may have indicated a negative preference, to provide dater 110 a, him/herself, an opportunity to evaluate the profiles. As a further example, in certain embodiments, fourth series of profile recommendations 320 c may include new profiles 130, not present in first series of profile recommendations 310. Fourth series of profile recommendations 320 c may additionally include a reordering of profiles 130, previously presented in first series of profile recommendations 310. This disclosure contemplates that recommendation algorithm 145 may place a different weight on selection 315 b, received from friend 110 b, as compared with selection 315 c, received from friend 110 c, when determining fourth series of profile recommendations 320 c. For example, recommendation algorithm 145 may determine fourth series of profile recommendations 320 c based at least in part on selection 315 b, received from friend 110 b, weight 155 b, assigned to friend 110 b, selection 315 c, received from friend 110 f, and weight 155 f, assigned to friend 110 f, where weights 155 b and 155 f may be determined as described above.

In certain embodiments, permissions 155 b may indicate that dater 110 a has granted first friend 110 b permission to select profiles 130 to present as suggestions to dater 110 a, but not to select profiles 130 as potential matches for dater 110 a, while permissions 155 f may indicate that dater 110 a has granted second friend 110 f permission to select profiles 130 as potential matches for dater 110 a. In such embodiments, recommendation algorithm 145 may determine fourth series of profile recommendations 320 c by taking into account both the suggestions provided by first friend 110 b and the selections of potential matches provided by second friend 110 f, as each described, individually, above.

Recommendation engine 165 may be a software module stored in memory 140 and executed by processor 135. An example algorithm for recommendation engine 165 is as follows: (1) receive a request 305 for profile recommendations from first dater 110 a, first friend 110 b of first dater 110 a, and/or second friend 110 f of first dater 110 a; (2) transmit first series of profile recommendations 310 to the user 110 who submitted request 305; (3) receive a selection 315 of a profile 130 recommended in first series of profiles recommendations 310, from the user 110 who submitted request 305; (4) determine, using algorithm 145, based at least on the selection 315 and a weight 155 assigned to user 110, a new series of profile recommendations 320; (5) transmit the new series of profile recommendations 320 to dater 110 a. While the above example presents one possible algorithm for recommendation engine 165, this disclosure contemplates that recommendation engine 165 may use any algorithm operable to generate and transmit recommendations of profiles 130 to users 110. For example, the algorithm used by recommendation engine 165 may include modifications, additions, or omissions to the example algorithm presented above. Furthermore, the algorithm used by recommendation engine 165 may include more, fewer, or other steps as compared with the example algorithm presented above, and the steps may be performed in parallel or in any suitable order.

While FIGS. 3A through 3C illustrate recommendation engine 165 generating recommendations 310 and 320 of profiles 130 for dater 110 a, as well as transmitting such recommendations to dater 110 a, first friend 110 b, and second friend 110 f, this disclosure contemplates that recommendation engine 165 may generate recommendations 310 and 320 and transmit such recommendations to any number of users 110. Furthermore, this disclosure contemplates that modifications, additions, or omissions may be made to recommendation engine 165 without departing from the scope of the invention. For example, this disclosure contemplates that some or all of the operations described above as being performed by recommendation engine 165 may be performed by other components of matching tool 105. Such components may be integrated or separated. Furthermore, the operations may be performed using any suitable logic comprising software, hardware, and/or other logic.

FIGS. 4A through 4C present examples illustrating the process by which matching engine 170 of matching tool 105 generates matches between first dater 110 a and second dater 110 b. FIG. 4A illustrates an example embodiment where daters 110 match with other daters 110 by providing positive preference indications in response to viewing profiles 130 of other daters 110 with whom them would like to be matched. FIGS. 4B and 4C illustrate example embodiments where matching tool 105 may enable friends 110 b and 110 d of daters 110 a and 110 c to match on behalf of the daters 110 a and 110 c with whom they are friends.

FIG. 4A illustrates the process by which matching engine 170 generates a match 425 between first dater 110 a and second dater 110 b, based on selections 415 a and 420 a provided by first dater 110 a and second dater 110 b, respectively. As illustrated in FIG. 4A, recommendation engine 165 may use recommendation algorithm 145 to generate first series of profile recommendations 405 to transmit to first dater 110 a. First series of profile recommendations 405 may include profile 130 c, belonging to second dater 110 b. Similarly, recommendation engine 165 may use recommendation algorithm 145 to generate second series of profile recommendations 410 to transmit to second dater 110 b. Second series of profile recommendations 410 may include profile 130 a, belonging to first dater 110 a.

In response to receiving first series of profile recommendations 405, first dater 110 a may select one or more profiles 130 presented in first series of profile recommendations 405, to indicate that first dater 110 a is interested in matching with the daters 110 to whom profiles 130 belong. For example, first dater 110 a may transmit selection 415 a of profile 130 c, belonging to second dater 110 c, to matching engine 170 to indicate that first dater 110 a is interested in matching with second dater 110 c. Similarly, in response to receiving second series of profile recommendations 410, second dater 110 c may select one or more profiles 130 presented in second series of profile recommendations 410, to indicate that second dater 110 c is interested in matching with the daters 110 to whom profiles 130 belong. For example, second dater 110 c may transmit selection 420 a of profile 130 a, belonging to first dater 110 a, to matching engine 170, to indicate that second dater 110 c is interested in matching with first dater 110 a.

Matching engine 170 is configured to compare selections 415 a and 420 a, received from first dater 110 a and second dater 110 c, to determine whether or not to generate any matches for first dater 110 a and second dater 110 c. For example, matching engine 170 is configured to generate match 425 a between first dater 110 a and second dater 110 c, by determining that first dater 110 a selected profile 130 c, belonging to second dater 110 c, and second dater 110 c selected profile 130 a, belonging to first dater 110 a. Once matching engine 170 has generated match 425 a between first dater 110 a and second dater 110 c, matching engine 170 may move profile 110 c, belonging to second dater 110 c, from first series of profiles 405 to a list of matches for first dater 110 a. Similarly, matching engine 170 may move profile 110 a, belonging to first dater 110 a, from second series of profiles 410 to a list of matches for second dater 110 c. Chatting engine 180 may also enable communication between first dater 110 a and second dater 110 c, as described in further detail below, in the discussion of FIG. 6 .

FIG. 4B presents an example in which friend 110 b of first dater 110 a is able to generate match 425 b between first dater 110 a and second dater 110 c. As illustrated in FIG. 4B, recommendation engine 165 may transmit first series of profiles 405 to friend 110 b of first data 110 a. As described above, first series of profiles 405 may include profile 130 c, belonging to second dater 110 c. Provided that first dater 110 a has granted friend 110 b permission to generate matches on his/her behalf, friend 110 b may select profile 130 c from amongst the profiles 130 presented in first series of profiles 405. For example, friend 110 b may select profile 130 c in response to viewing profile 130 c and determining that dater 110 c, to whom profile 130 c belongs, would likely make a good match with dater 110 a. Friend 110 b may then transmit his/her selection of profile 130 c to matching engine 170, as selection 415 b. Matching engine 170 may then generate match 425 b between first dater 110 a and second dater 110 c, in response to determining that second dater 110 c selected profile 130 a, belonging to first dater 110 a, in response to receiving second series of profiles 410, which included profile 130 a.

FIG. 4C presents an example in which friend 110 b of first dater 110 a and friend 110 d of second dater 110 c are able to generate match 425 c between first dater 110 a and second dater 110 c. As illustrated in FIG. 4C, recommendation engine 165 may transmit second series of profile 410 to friend 110 d of second dater 110 c. As described above, second series of profiles 410 may include profile 130 a, belonging to first dater 110 a. Provided that second dater 110 c has granted friend 110 d permission to generate matches on his/her behalf, friend 110 d may select profile 130 a from amongst the profiles 130 presented in second series of profiles 410. For example, friend 110 d may select profile 130 a in response to viewing profile 130 a and determining that dater 110 a, to whom profile 130 a belongs, would likely make a good match with dater 110 c. Friend 110 d may then transmit his/her selection of profile 130 a to matching engine 170, as selection 420 b. Matching engine 170 may then generate match 425 c between first dater 110 a and second dater 110 c in response to determining that friend 110 b of first dater 110 a selected profile 130 c, belonging to second dater 110 c, in response to receiving first series of profiles 405, which included profile 130 c.

Matching engine 170 may be a software module stored in memory 140 and executed by processor 135. An example algorithm for matching engine 170 is as follows: (1) receive selection 415 from first dater 110 a or friend 110 b of first dater 110 a; (2) receive selection 420 from second dater 110 c or friend 110 d of second dater 110 c; (3) determine whether selection 415 includes profile 130 c, belonging to second dater 110 c; (4) determine whether selection 420 includes profile 130 a, belonging to first dater 110 a; (5) if selection 415 includes profile 130 c and selection 420 includes profile 130 a, generate match 425 between first dater 110 a and second dater 110 c and transmit match 425 to first dater 110 a and second dater 110 c; and (6) if selection 415 does not include profile 130 c and/or selection 420 does not include profile 130 a, do not generate match 425 between first dater 110 a and second dater 110 c. While the above example presents one possible algorithm for matching engine 170, this disclosure contemplates that matching engine 170 may use any algorithm operable to generate matches between users 110. For example, the algorithm used by matching engine 170 may include modifications, additions, or omissions to the example algorithm presented above. Furthermore, the algorithm used by matching engine 170 may include more, fewer, or other steps as compared with the example algorithm presented above, and the steps may be performed in parallel or in any suitable order.

While FIGS. 4A through 4C illustrate matching engine 170 generating matches 425 between first dater 110 a and second dater 110 c, based a comparison between input from first dater 110 a and/or friend 110 b of first dater 110 a, and input from second dater 110 c and/or friend 110 d of second dater 110 c, this disclosure contemplates that matching engine 170 may generate matches between any number of users 110, in any suitable manner, based on input from the users 110 and/or any number of other users. Furthermore, this disclosure contemplates that modifications, additions, or omissions may be made to matching engine 170 without departing from the scope of the invention. For example, this disclosure contemplates that some or all of the operations described above as being performed by matching engine 170 may be performed by other components of matching tool 105. Such components may be integrated or separated. Furthermore, the operations may be performed using any suitable logic comprising software, hardware, and/or other logic.

In certain embodiments, matches 425 b (of FIG. 4B) and 425 c (of FIG. 4C), generated by at least one of friends 110 b and 110 d may be indistinguishable from match 425 a (of FIG. 4A) generated entirely by daters 110 a and 110 c, themselves. For example, when first dater 110 a receives match 425 c between him/herself and second dater 110 c, first dater 110 a may be unaware that friend 110 d of dater 110 b selected his/her profile, rather than dater 110 b him/herself. On the other hand, in some embodiments, match 425 may include an indication of the user 110 who helped generate the match. For example, match 425 c, generated according to the process illustrated in FIG. 4C, may indicate to first dater 110 a that it was a friend of second dater 110 c who thought that first dater 110 a and second dater 110 c should be matched.

In certain embodiments, daters 110 a and 110 c may be permitted to override selections 415 b and 420 b submitted to matching engine 170 by friends 110 b and 110 d, respectively. For example, daters 110 a and 110 c may be permitted to view selections 415 b and 420 b and to cancel any selections that they do not approve of. In some embodiments, daters 110 a and 110 c may not be permitted to override any selections 415 b and 420 b submitted to matching engine 170. In certain embodiments, daters 110 a and 110 c may be permitted to un-match with any of the daters that a friend has matched them with. For example, in response to viewing match 425 b or 425 c, generated based on selection 415 b made by friend 110 b, and determining that he/she does not want to be matched with second dater 110 c, first dater 110 a may remove match 425 b or 425 c from his/her list of matches, thereby unmatching with second dater 110 c.

In certain embodiments, matching engine 170 may be configured to generate matches between groups of daters. For example, first dater 110 a may generate a first group of daters from certain members of his/her friend list and/or team/group. This first group of daters may include first dater 110 a, third dater 110 g, and fourth dater 110 h, for example. In certain embodiments, the members of the group may (1) assign a name to their group, (2) create an icon for their group, and/or (3) include any sort of distinguishing feature to identify the group. Once a group of daters has been created, the group may act collectively, as a unit, to select other groups of daters in the hopes of generating a group-based match. For example, the first group of daters may select a second group of daters that includes, for example, second dater 110 c, fifth dater 110 i, and sixth dater 110 j. If this second group of daters similarly selects the first group of daters, then matching engine 170 may generate a match between the first group of daters and the second group of daters. Such a match may enable the members of the first group of daters and the members of the second group of daters to communicate with one another in a group chat generated by chatting engine 180. This aspect of matching tool 105 is described in further detail above, in the discussion of FIG. 1 .

FIG. 5 presents an example activity feed 500, generated by feed generator 175 and associated with a given dater 110 a. FIG. 5 illustrates activity feed 500 as displayed on device 115 a of dater 110 a. However, this disclosure contemplates that activity feed 500, associated with dater 110 a, may also be displayed on device 115 b of friend 110 b. In certain embodiments, activity feed 500 may illustrate the actions taken by a dater 110 a as well as his/her friends 110 b, while interacting with matching tool 105. In this manner, activity feed 500 may enable matching tool 105 to further involve a dater's friends in the online dating experience, as well as to notify the dater of the actions taken by his/her friends on his/her behalf.

In certain embodiments, and as illustrated in FIG. 5 , activity feed 500 may be a “team-centric” activity feed. For example, feed generator 175 may generate and display activity feed 500 for dater 110 a as well as for each member of dater 110 a's team/group and/or each member of dater 110 a's friend list, where activity feed 500 illustrates the activities performed by dater 110 a as well as the activities performed by each member of dater 110 a's team/group and/or friend list on behalf of dater 110 a. In certain embodiments in which dater 110 a has more than one team/group and/or is a member of another dater's team/group and/or friend list, dater 110 a may receive multiple activity feeds 500, where each activity feed is associated with a different team/group and/or friend list. Dater 110 a may then be able to switch between the multiple activity feeds 500, generated by feed generator 175, depending on which team/group and/or friend list he/she would like to view activity for, at a given point in time. Similarly, when a user 110 b is a member of dater 110 a's team/group and/or friend list and is also a member of another dater's team/group and/or friend list, user 110 b may alternatively view a separate activity feed 500 for each team/group and/or friend list to which he/she is a member. As illustrated in FIG. 5 , in certain embodiments, activity feed 500 may display an indication 505 of the team/group and/or dater 110 to which activity feed 500 is directed. For example, indication 505, depicted in FIG. 5 , indicates that activity feed 500 is directed to the activities of the members of first dater 110 a's team/group.

In certain embodiments, any activity that user 110 performs as a member of dater 110 a's team/group and/or friend list may appear in the activity feed 500 associated with that team/group and/or friend list. As an example, activity feed 500 may indicate that dater 110 a selected one or more profiles 130. For example, as illustrated in FIG. 5 , activity feed 500 may display profile picture 520, belonging to dater 110 a, along with message 525 stating that “1st dater was perusing profiles,” or any similar phrase to indicate that first dater 110 a was selecting profiles 130 from amongst a series of profile recommendations generated and presented to first dater 110 a by recommendation engine 165. Activity feed 500 may further display profile pictures 530 a, 530 b, and 530 c, from the profiles 130 selected by first dater 110 a. As another example, activity feed 500 may indicate that friend 110 f of first dater 110 a generated a match for first dater 110 a (e.g., friend 110 f selected profile 130 c, belonging to second dater 110 c, and second dater 110 c or a member of second dater 110 c's team/group and/or friend list also selected profile 130 a belonging to first dater 110 a). For example, as illustrated in FIG. 5 , activity feed 500 may display profile picture 535, belonging to friend 110 f, along with message 540 stating that “2nd friend found a match for 1st dater,” or any similar phrase to indicate that a selection of profile 130 c by friend 110 f resulted in a match between first dater 110 a and second dater 110 c.

Further examples of the activities performed by members of dater 110 a's team/group and/or friend list (including activities performed by dater 110 a him/herself) which may be displayed in activity feed 500 include: (1) when dater 110 a receives a message from one of his/her matches; (2) when dater 110 a sends a message to one of his/her matches; (3) when friend 110 b messages one of dater 110 a's matches on dater's 110 a behalf; (4) when dater 110 a sends/receives a message from a member of his/her friend list and/or team/group; (5) when friend 110 b suggests a profile 130 to dater 110 a; and/or (6) any other activities that may be performed by members of dater 110 a's team/group and/or friend list.

In certain embodiments, despite the fact that activity feed 500 may be a “team-centric” activity feed, the version of activity feed 500 presented to dater 110 a may be different from the version of activity feed 500 presented to friend 110 b, who is a member of dater 110 a's team/group and/or friend list. Such differences may arise due to permissions 150 set for friend 110 b. For example, dater 110 a may not want friend 110 b to know each time dater 110 a begins a conversation with one of his matches. Accordingly, dater 110 a may set permissions 150 b for friend 110 b to indicate that the activity feed 500 presented to friend 110 b is not to display any indications when dater 110 a begins a conversation with one of his matches. As another example, in certain embodiments, the version of activity feed 500 presented to dater 110 a may be different from the version of activity feed 500 present to friend 110 b of dater 110 a as a result of permissions 150 set by other friends of dater 110 a. For example, friend 110 f of dater 110 a may set permissions 150 such that only dater 110 a may view the activities performed by friend 110 f on behalf of dater 110 a in activity feed 500. As described above, in addition to governing the information that may be presented on activity feed 500, permissions 150 may also specify the actions that friends 110 may take on behalf of dater 110 a when interacting with matching tool 105.

Feed generator 175 may be a software module stored in memory 140 and executed by processor 135. An example algorithm for feed generator 175, used to generate a “team-centric” activity feed 500 is as follows: (1) for each member of dater 110 a's team/group and/or friend list, determine that the member performed an activity on behalf of dater 110 a, and add a description of the activity to activity feed 500; (2) generate a version of activity feed 500 for each member of dater 110 a's team/group and/or friend list, by removing those activities from activity feed 500 that permissions 150 belonging to the member indicate that the member is not permitted to view; and (3) transmit each version of activity feed 500 to the associated member of dater 110 a's team/group and/or friend list. While the above example presents one possible algorithm for feed generator 175, this disclosure contemplates that feed generator 175 may use any algorithm operable to generate feed 500, illustrating the activities of users 110. For example, the algorithm used by feed generator 175 may include modifications, additions, or omissions to the example algorithm presented above. Furthermore, the algorithm used by feed generator 175 may include more, fewer, or other steps as compared with the example algorithm presented above, and the steps may be performed in parallel or in any suitable order.

In certain embodiments, rather than generating a “team-centric” activity feed, feed generator 175 may generate a “user-centric” activity feed. For example, rather than generating multiple activity feeds 500 for each team/group and/or friend list belonging to user 110 and/or each team/group and/or friend list to which user 110 belongs, feed generator 175 may generate a single activity feed 500 for user 110. This single activity feed may include activities performed by user 110 as well as activities affecting user 110 and performed by any of the other users to which user 110 is connected by matching tool 105. In certain embodiments, user-centric activity feed 500 may additionally include friend-of-a-friend activities. For example, consider a situation in which both user 110 b and user 110 f are friends of dater 110 a, but are not connected with one another through matching tool 105 (e.g., user 110 b is not a member of user 110 f's team/group and/or friend list and user 110 f is not a member of user 110 b's team/group and/or friend list). Activity feed 500 generated by feed generator 175 for user 110 b may nevertheless include activities performed by user 110 f on behalf of dater 110 a, given dater 110 a's connection with user 110 b. Similarly, activity feed 500 generated by feed generator 175 for user 110 f may include activities performed by user 110 b on behalf of dater 110 a, given dater 110 a's connection with user 110 f. In such embodiments, users 110 b and 110 f may be able to control whether the activities they perform on behalf of dater 110 a appear in one another's activity feeds 500, through permissions 150. For example, user 110 b may be able to set permissions 150 for friends-of-friends through a privacy setting offered by matching tool 105.

An example algorithm for feed generator 175, used to generate a “user-centric” activity feed 500 for user 110 is as follows: (1) determine that user 110 performed an activity using matching tool 105 and add a description of the activity to activity feed 500; (2) determine that a member of user 110's team/group and/or friend list performed an activity on behalf of user 110 and add a description of the activity to activity feed 500; (3) determine that a member of a given dater's team/group and/or friend list, to which user 110 is also a member, performed an activity on behalf of the dater; (4) determine whether the member of the team/group and/or friend list has set a privacy setting offered by matching tool 105 to allow friend-of-a-friend activity sharing; (5) if the member of the team/group and/or friend list has set the privacy setting to allow friend-of-a-friend activity sharing, add a description of the activity performed by the member of the team/group and/or friend list on behalf of the dater to activity feed 500; and (6) transmit activity feed 500 to user 110. While the above example presents one possible algorithm for feed generator 175, this disclosure contemplates that feed generator 175 may use any algorithm operable to generate feed 500, illustrating the activities of users 110. For example, the algorithm used by feed generator 175 may include modifications, additions, or omissions to the example algorithm presented above. Furthermore, the algorithm used by feed generator 175 may include more, fewer, or other steps as compared with the example algorithm presented above, and the steps may be performed in parallel or in any suitable order.

FIG. 6 illustrates an example graphical user interface 600 associated with a group chat amongst friends of dater 110 a, and displayed on device 115 b, belonging to friend 110 b. Graphical user interface 600 may be generated by chatting engine 180 (of FIG. 1 ), and may enable friends of dater 110 a to share profiles 130 with both dater 110 a and other friends of dater 110 a and/or members of dater 110 a's team/group, as illustrated in FIG. 6 . For example, each profile 130 may include an interactive button through which a user 110 may select the profile to share in a group chat. In response to user 110 selecting profile 130 to share in a group chat, graphical user interface 600 may display profile picture 605, associated with profile 130, along with text box 615. User 110 may use text box 615 to input comments about profile 130 that he/she wishes to share with the other participants in the group chat. Once user 110 has finished inputting comments into text box 615, user 110 may then share both these comments and profile 130 with the other participants of the group chat by selecting butting 610.

In certain embodiments, in response to user 110 sharing profile 130 with the other participants of the group chat, one or more members of the group chat may be able to select profile 130 directly from the group chat. For example, dater 110 a may select profile 130 directly from the group chat, indicating that dater 110 a would like to be matched with the dater to whom profile 130 belongs. As another example, friend 110 b may select profile 130 directly from the group chat, generating either a potential match for dater 110 a or a suggestion for dater 110 a, depending on permissions 150 b provided to friend 110 b by dater 110 a.

In certain embodiments, in addition to enabling friends of dater 110 a to share profiles 130 with one another, chatting engine 180 may be enable friends of dater 110 a to share activities displayed in activity feed 500 with one another. As a specific example, in response to viewing on activity feed 500 that first friend 110 b suggested profile 130 c to dater 110 a, second friend 110 f may share this event in the group chat for dater 110 a's team/group and/or friend list and comment that he/she approves of this suggestion.

In addition to enabling users 110 to share profiles 130 with one another in group chats, chatting engine 180 may facilitate any suitable form of communication between users 110, as described in further detail above, in the discussion of FIG. 1 .

FIG. 7 presents a flowchart illustrating the method by which matching tool 105 may generate matches 425 between a pair of daters 110 a and 110 c.

In step 705 matching tool 105 (of FIG. 1 ) generates and transmits first series of profile recommendations 405. First series of profile recommendations 405 may include profiles 130 belonging to daters 110 that matching tool 105 has determined are likely compatible with first dater 110 a. This disclosure contemplates that matching tool 105 may transmit first series of profile recommendations 405 to first dater 110 a and/or a friend 110 b of first dater 110 a. In step 710 matching tool 105 receives a selection 415 of profile 130 c, belonging to second dater 110 c. In step 715 matching tool 105 determines whether selection 415 was received from first dater 110 a or friend 110 b of first dater 110 a.

If, in step 715 matching tool 105 determines that selection 415 was received from first dater 110 a, then in step 735 matching tool 105 determines whether the tool has received a selection 420 of profile 130 a, belonging to first dater 110 a, from second dater 110 c. If, in step 735 matching tool 105 determines that the tool has received a selection 420 of profile 130 a, belonging to first dater 110 a, from second dater 110 c, in step 745 matching tool 105 generates match 425 between first dater 110 a and second dater 110 c. In step 750 matching tool 105 enables communication between first dater 110 a and second dater 110 c.

If, in step 735 matching tool 105 determine that the tool has not received a selection 420 of profile 130 a, belonging to first dater 110 a, from second dater 110 c, in step 740 matching tool 105 determines whether the tool has received a selection 420 of profile 130 a from friend 110 d of second dater 110 c. If, in step 740 matching tool 105 determines that the tool has received a selection 420 of profile 130 a from friend 110 d of second dater 110 c, in step 745 matching tool 105 generates match 425 between first dater 110 a and second dater 110 c and in step 750 matching tool 105 enables communication between first dater 110 a and second dater 110 c. On the other hand, if, in step 740 matching tool 105 determines that the tool has not received a selection 420 of profile 130 a from friend 110 d of second dater 110 c, matching tool 105 does not generate a match between first dater 110 a and second dater 110 c.

If, in step 715 matching tool 105 determines that selection 415 was received from friend 110 b of first dater 110 a, then in step 720, matching tool 105 determines whether friend 110 b has been granted permission by first dater 110 a to select potential matches for first dater 110 a. If, in step 720 matching tool 105 determines that friend 110 b has been granted permission by first dater 110 a to select potential matches for first dater 110 a, the method proceeds to step 735, and continues from step 735 as described above.

If, in step 720 matching tool 105 determines that friend 110 b has not been granted permission by first dater 110 a to select potential matches for first dater 110 a, then, in step 725 matching tool 105 treats selection 415 from friend 110 b as a suggestion for dater 110 a. Accordingly, matching tool 105 reorders the profiles 130 in first series of profile recommendations 405 into a second series of profile recommendations, in which profile 130 c, belonging to dater 110 c, is placed earlier in the series than in first series of profile recommendations 405. For example, matching tool 105 may reorder the profiles 130 in first series of profile recommendations 405 into the second series of profile recommendations by placing profile 130 c at the beginning of the second series of profile recommendations. Additionally, matching tool 105 may place an indication on profile 130 c that friend 110 b has suggested profile 130 c for first dater 110 a. In step 730 matching tool 105 transmits the second series of profile recommendations to first dater 110 a for selection therefrom.

Modifications, additions, or omissions may be made to method 700 depicted in FIG. 7 . Method 700 may include more, fewer, or other steps. For example, steps may be performed in parallel or in any suitable order. While discussed as matching tool 105 (or components thereof) performing the steps, any suitable component of system 100, such as device(s) 115 for example, may perform one or more steps of the method.

FIG. 8 presents a flowchart illustrating the method by which matching tool 105 may generate recommendations of potentially compatible users 110 for a dater 110 a.

In step 805 matching tool 105 transmits a first series of profile recommendations 310 to dater 110 a, first friend 110 b of dater 110 a, and/or second friend 110 f of dater 110 a. In step 810 matching tool 105 receives a selection 315 of one or more profiles 130 presented in first series of profile recommendations 310. In step 815 matching tool 105 determines if selection 315 was received from dater 110 a.

If, in step 815 matching tool 105 determines that selection 315 was received from dater 110 a, in step 825 matching tool 105 determines weight 155 a assigned to dater 110 a. On the other hand, if, in step 815 matching tool 105 determines that selection 315 was received from first friend 110 b or second friend 110 f, in step 820 matching tool 105 determines weight 155 b, assigned to first friend 110 b, or weight 155 f, assigned to second friend 110 f. In step 830 matching tool 105 determines a second series of profile recommendations 320 for dater 110 a, based at least in part on selection 315 and weight 155 a, using matching algorithm 145. In step 835 matching tool 105 determines whether or not a request has been received from any of dater 110 a, first friend 110 b, and second friend 110 f for additional profile recommendations. If, in step 835 matching tool 105 determines that a request has been received for additional profile recommendations, in step 840 matching tool 105 transmits second series of profile recommendations 320. Method 800 then proceeds to step 810 and continues from step 810 as described above.

Modifications, additions, or omissions may be made to method 800 depicted in FIG. 8 . Method 800 may include more, fewer, or other steps. For example, steps may be performed in parallel or in any suitable order. While discussed as matching tool 105 (or components thereof) performing the steps, any suitable component of system 100, such as device(s) 115 for example, may perform one or more steps of the method.

Although the present disclosure includes several embodiments, a myriad of changes, variations, alterations, transformations, and modifications may be suggested to one skilled in the art, and it is intended that the present disclosure encompass such changes, variations, alterations, transformations, and modifications as falling within the scope of the appended claims. 

What is claimed is:
 1. An apparatus comprising: an interface configured to send and receive data over a network; a memory configured to store a set of permissions comprising a first permission and a second permission different from the first permission, wherein: a first user assigned the first permission to a second user, the first permission indicating that the second user is permitted to view recommendations of other users generated for the first user and select from amongst the recommendations to provide one or more suggestions of other users to the first user; and the first user assigned the second permission to a third user, the second permission indicating that the third user is permitted to view the recommendations of other users generated for the first user and select from amongst the recommendations to generate one or more matches for the first user; and a hardware processor configured to: transmit, using the interface, a first series of profiles to the second user, the first series of profiles corresponding to a first set of recommendations of users for the first user; receive, using the interface, a selection from the second user of a first profile of the first series of profiles; determine that the first permission is assigned to the second user; in response to receiving the selection from the second user of the first profile of the first series of profiles and determining that the first permission is assigned to the second user: update, based at least in part on the selection from the second user of the first profile, the first series of profiles, the updated first series of profiles comprising the first profile; and the updated first series of profiles comprising the first profile to the first user, wherein the first profile comprises an icon or statement indicating that the first profile is suggested for the first user by the second user; transmit, using the interface, a second series of profiles to the third user, the second series of profiles corresponding to a second set of recommendations of users for the first user; receive, using the interface, a selection from the third user of a second profile of the second series of profiles, the second profile belonging to a fourth user; determine that the second permission is assigned to the third user; and in response to receiving the selection from the third user of the second profile and determining that the second permission is assigned to the third user: update the second series of profiles by removing the second profile; transmit the updated second series of profiles to the first user; and automatically enable communication between the first user and the fourth user.
 2. The apparatus of claim 1, wherein: the first series of profiles comprises a third profile, the third profile located before the first profile in the first series of profiles; and the updated first series of profiles comprises the first profile and the second profile, the first profile located before the second profile in the second series of profiles.
 3. The apparatus of claim 2, wherein the updated first series of profiles comprises an indication that the second user recommended the first profile to the first user.
 4. The apparatus of claim 1, wherein: a first weight is assigned to the first user; a second weight is assigned to the second user, the second weight different from the first weight; updating the first series of profiles is further based on the first weight; and in response to transmitting the updated first series of profiles to the first user, the processor is further configured to: receive, using the interface, a selection from the first user of a profile of the updated first series of profiles; and in response to receiving the selection from the first user of the profile of the updated first series of profiles: determine, based at least in part on the selection from the first user of the profile and the second weight, a third series of profiles; and transmit, using the interface, the third series of profiles to the first user.
 5. The apparatus of claim 1, wherein: a first weight is assigned to the second user; a second weight is assigned to a fourth user, the second weight different from the first weight; the processor is further configured to: transmit, using the interface, the first series of profiles to the fourth user; and receive, using the interface, a selection from the fourth user of a second profile of the first series of profiles; and updating the first series of profiles is further based on the first weight, the second weight, and the selection from the fourth user of the second profile.
 6. The apparatus of claim 5, wherein: the first weight is greater than the second weight; the first series of profiles comprises a third profile, the third profile located before the first profile and the second profile in the first series of profiles, the second profile located before the first profile in the first series of profiles; and the updated first series of profiles comprises the first profile, the second profile, and the third profile, the first profile located before the second profile and the third profile in the updated first series of profiles, the second profile located before the third profile in the updated first series of profiles.
 7. The apparatus of claim 1, wherein the hardware processor is further configured to: place the second profile in a list of matches for the first user; and transmit, using the interface, the list of matches for the first user to the first user.
 8. A method comprising: receiving, from a first user, an assignment of a first permission to a second user, the assignment of the first permission to the second user indicating that the second user is permitted to view recommendations of other users generated for the first user and select from amongst the recommendations to provide one or more suggestions of other users to the first user; receiving, from the first user, an assignment of a second permission to a third user, the second permission different from the first permission, the assignment of the second permission to the third user indicating that the third user is permitted to view the recommendations of other users generated for the first user and select from amongst the recommendations to generate one or more matches for the first user; transmitting a first series of profiles to the second user, the first series of profiles corresponding to a first set of recommendations of users for the first user; receiving a selection from the second user of a first profile of the first series of profiles; determining that a first permission is assigned to the second user; in response to receiving the selection from the second user of the first profile of the first series of profiles and determining that the first permission is assigned to the second user: updating, based at least in part on the selection from the second user of the first profile, the first series of profiles, the updated first series of profiles comprising the first profile; and transmitting the updated first series of profiles comprising the first profile to the first user, wherein the first profile comprises an icon or statement indicating that the first profile is suggested for the first user by the second user; transmitting a second series of profiles to the third user, the second series of profiles corresponding to a second set of recommendations of users for the first user; receiving a selection from the third user of a second profile of the second series of profiles, the second profile belonging to a fourth user; determining that the second permission is assigned to the third user; and in response to receiving the selection from the third user of the second profile and determining that the second permission is assigned to the third user: updating the second series of profiles by removing the second profile; transmitting the updated second series of profiles to the first user; and automatically enabling communication between the first user and the fourth user.
 9. The method of claim 8, wherein: the first series of profiles comprises a third profile, the third profile located before the first profile in the first series of profiles; and the updated first series of profiles comprises the first profile and the second profile, the first profile located before the second profile in the second series of profiles.
 10. The method of claim 9, wherein the updated first series of profiles comprises an indication that the second user recommended the first profile to the first user.
 11. The method of claim 8, wherein: a first weight is assigned to the first user; a second weight is assigned to the second user, the second weight different from the first weight; updating the first series of profiles is further based on the first weight; and in response to transmitting the updated first series of profiles to the first user, the method further comprises: receiving a selection from the first user of a profile of the updated first series of profiles; and in response to receiving the selection from the first user of the profile of the updated first series of profiles: determining, based at least in part on the selection from the first user of the profile and the second weight, a third series of profiles; and transmitting the third series of profiles to the first user.
 12. The method of claim 8, wherein: a first weight is assigned to the second user; a second weight is assigned to a fourth user, the second weight different from the first weight; the method further comprises: transmitting the first series of profiles to the fourth user; and receiving a selection from the fourth user of a second profile of the first series of profiles; and determining the updated first series of profiles is further based on the first weight, the second weight, and the selection from the fourth user of the second profile.
 13. The method of claim 12, wherein: the first weight is greater than the second weight; the first series of profiles comprises a third profile, the third profile located before the first profile and the second profile in the first series of profiles, the second profile located before the first profile in the first series of profiles; and the updated first series of profiles comprises the first profile, the second profile, and the third profile, the first profile located before the second profile and the third profile in the updated first series of profiles, the second profile located before the third profile in the updated first series of profiles.
 14. The method of claim 8, further comprising: placing the second profile in a list of matches for the first user; and transmitting the list of matches for the first user to the first user.
 15. At least one non-transitory computer-readable medium comprising a plurality of instructions that, when executed by at least one hardware processor, are configured to: receive, from a first user, an assignment of a first permission to a second user, the assignment of the first permission to the second user indicating that the second user is permitted to view recommendations of other users generated for the first user and select from amongst the recommendations to provide one or more suggestions of other users to the first user; receive, from the first user, an assignment of a second permission to a third user, the second permission different from the first permission, the assignment of the second permission to the third user indicating that the third user is permitted to view the recommendations of other users generated for the first user and select from amongst the recommendations to generate one or more matches for the first user; transmit a first series of profiles to the second user, the first series of profiles corresponding to recommendations of users for the first user; receive a selection from the second user of a first profile of the first series of profiles; determine that a first permission is assigned to the second user; and in response to receiving the selection from the second user of the first profile of the first series of profiles and determining that the first permission is assigned to the second user: update, based at least in part on a first weight assigned to the second user and the selection from the second user of the first profile, the first series of profiles, the updated first series of profiles comprising the first profile; and transmit the updated first series of profiles comprising the first profile to the first user, wherein the first profile comprises an icon or statement indicating that the first profile is suggested for the first user by the second user; in response to transmitting the updated first series of profiles to the first user: receive a selection from the first user of a profile of the updated first series of profiles; and in response to receiving the selection from the first user of the profile of the updated first series of profiles: further update, based at least in part on a second weight assigned to the first user and the selection from the first user of the profile of the updated first series of profiles, the updated first series of profiles; and transmit the further updated first series of profiles to the first user; transmit a second series of profiles to the third user, the second series of profiles corresponding to a second set of recommendations of users for the first user; receive a selection from the third user of a second profile of the second series of profiles, the second profile belonging to a fourth user; determine that the second permission is assigned to the third user; and in response to receiving the selection from the third user of the second profile and determining that the second permission is assigned to the third user: update the second series of profiles by removing the second profile; transmit the updated second series of profiles to the first user; and automatically enable communication between the first user and the fourth user.
 16. The at least one non-transitory computer-readable medium of claim 15, wherein: the first series of profiles comprises a third profile, the third profile located before the first profile in the first series of profiles; and the updated first series of profiles comprises the first profile and the second profile, the first profile located before the second profile in the second series of profiles.
 17. The at least one non-transitory computer-readable medium of claim 16, wherein the updated first series of profiles comprises an indication that the second user recommended the first profile to the first user.
 18. The at least one non-transitory computer-readable medium of claim 15, wherein: a third weight is assigned to a fourth user, the third weight different from the first weight; the plurality of instructions, when executed by the at least one processor, are further configured to: transmit the first series of profiles to the fourth user; and receive a selection from the fourth user of a second profile of the first series of profiles; and determining the updated first series of profiles is further based on the third weight and the selection from the fourth user of the second profile.
 19. The at least one non-transitory computer-readable medium of claim 18, wherein: the first weight is greater than the third weight; the first series of profiles comprises a third profile, the third profile located before the first profile and the second profile in the first series of profiles, the second profile located before the first profile in the first series of profiles; and the updated first series of profiles comprises the first profile, the second profile, and the third profile, the first profile located before the second profile and the third profile in the updated first series of profiles, the second profile located before the third profile in the updated first series of profiles.
 20. The at least one non-transitory computer-readable medium of claim 15, wherein, when executed by the at least one processor, the plurality of instructions are further configured to: place the second profile in a list of matches for the first user; and transmit the list of matches for the first user to the first user. 